我有一个如下查询:
select dateSoS, timeSoS
from workSchedules
where timeSoS between '02:00' and '11:00'
group by dateSoS, timeSoS, createdTs
order by dateSoS desc, createdTs desc, timeSoS desc;
它输出大约10k条记录,看起来像:
"2021-04-15";"08:00:00"
"2021-04-15";"08:00:00"
"2021-04-15";"08:00:00"
"2021-04-15";"08:00:00"
"2021-04-15";"08:00:00"
"2021-04-15";"07:30:00"
"2021-04-15";"07:30:00"
"2021-04-15";"07:30:00"
"2021-04-14";"07:30:00"
"2021-04-14";"07:30:00"
"2021-04-14";"07:30:00"
"2021-04-14";"07:30:00"
"2021-04-13";"06:30:00" <== not an error
"2021-04-13";"08:00:00"
"2021-04-13";"08:00:00"
"2021-04-13";"08:00:00"
...
其中,workschedules还有一个名为pitid(point-in-time id)的附加字段。我需要的是为pitid填充每个日期的唯一id。换句话说,使用上面的示例,我希望所有日期为2021-04-15的记录的pitid为1,日期为2021-04-14的记录的pitid为2,日期为2021-04-13的记录的pitid为3,并且。。。
我试着写了一点php来完成这项工作,但它永远运行。
对于timesos的时间范围,我还有另外四个范围要运行。我不介意运行查询四次,但一次运行必须添加上一次。
当做,
1条答案
按热度按时间bihw5rsg1#
使用
dense_rank()
: