我正在尝试使用一组包含不总是连续的不同日期的数据来获取不同的日期编号。例如,如果我有这个数据:
date | id
2019-01-01 | 1
2019-01-02 | 2
2019-01-02 | 3
2019-01-04 | 4
2019-01-07 | 5
2019-01-07 | 6
我需要获取日期编号,其中 day_num 是拳头的下一个唯一数据,而不是自第一个开始的天数 .. 例如
date | id | day_num
2019-01-01 | 1 | 1
2019-01-02 | 2 | 2
2019-01-02 | 3 | 2
2019-01-04 | 4 | 3
2019-01-07 | 5 | 4
2019-01-07 | 6 | 4
用例:
1)我需要知道某人记录了多少个不同的日期..所以在上面我可以看到时间记录了 4 天(最后一个day_num
值)。
2) 我需要查看每个单独的日期组是哪个工作日.. 例如,上面我可以看到 2019-01-04 完成的工作是此人的第 3 次工作。
为简洁起见,未显示 user_id、小时数等列
在试图弄清楚这一点时,我得到了
COUNT(1) OVER (
ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW
) day_num,
.. 这当然不是按日期分组。这是 PG 9.6,所以我没有可用的 frame_exclusion .. 不确定这是否有帮助。
dense_rank()
似乎是一个完美的契合。数据库<>小提琴