添加坑id

bd1hkmkf  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(313)

我有一个如下查询:

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的时间范围,我还有另外四个范围要运行。我不介意运行查询四次,但一次运行必须添加上一次。
当做,

bihw5rsg

bihw5rsg1#

使用 dense_rank() :

select t.*,
       dense_rank() over (order by dateSos::date desc) as pitid
from t;

相关问题