【发布时间】:2020-03-10 06:02:39
【问题描述】:
我的表结构如下:
timestamp
2020-03-10 04:05:44.000000
2020-03-10 04:05:44.000000
2020-03-10 04:05:44.000000
2020-03-10 04:05:44.000000
2020-03-10 07:07:44.000000
2020-03-10 07:07:44.000000
2020-03-10 13:17:44.000000
2020-03-10 13:17:44.000000
2020-03-10 13:17:44.000000
2020-03-10 13:17:44.000000
2020-03-10 13:17:44.000000
2020-03-10 13:17:44.000000
2020-03-10 13:17:44.000000
每天只有三个时间戳(时间可能不同,但总是三个)。我想要的是另一列,它告诉我哪个时间戳是第一个、第二个和第三个,即产生如下输出:
timestamp timestamp_order
2020-03-10 04:05:44.000000 1
2020-03-10 04:05:44.000000 1
2020-03-10 04:05:44.000000 1
2020-03-10 04:05:44.000000 1
2020-03-10 07:07:44.000000 2
2020-03-10 07:07:44.000000 2
2020-03-10 13:17:44.000000 3
2020-03-10 13:17:44.000000 3
2020-03-10 13:17:44.000000 3
2020-03-10 13:17:44.000000 3
2020-03-10 13:17:44.000000 3
2020-03-10 13:17:44.000000 3
2020-03-10 13:17:44.000000 3
三个存储桶之间的条目数量可能不同。我已经尝试了一些 RANK() 或 NTILE() 函数,但无法获得正确的输出,因为它给我的数字太高(排名给我 1,1,1,1,5,5,...)或假设桶大小相同。
谢谢!
【问题讨论】:
-
试试 dense_rank 它应该会给你所需的输出
-
.....标记数据库