【发布时间】:2018-02-14 15:37:38
【问题描述】:
我有一张这样的桌子
ID Date Sale Sale_desc
1 1/1/2017 10 book
1 1/1/2017 10 book
1 1/1/2017 10 book
2 1/2/2017 12 notebook
2 1/2/2017 12 notebook
3 1/3/2017 1 pen
3 1/3/2017 1 pen
我运行以下查询来获取行号:
select *, row_number() over (partition by id order by date)
from the_table;
但结果不是我所期望的。
ID Date Sale Sale_desc row_num
1 1/1/2017 10 book 1
1 1/1/2017 10 book 1
1 1/1/2017 10 book 1
2 1/2/2017 12 notebook 1
2 1/2/2017 12 notebook 2
3 1/3/2017 1 pen 1
3 1/3/2017 1 pen 2
前 3 行的 row_num 应该是 1、2、3,但看起来 row_num() 并没有遍历所有行。请帮忙。谢谢
【问题讨论】:
-
尽量把理解你的问题所需的一切都放在问题的文本中。
-
这看起来很奇怪,对于其他 ID 来说是正确的。您可以将其重写为
COUNT(*) over (partition by id order by date ROWS UNBOUNDED PRECEDING),检查是否返回正确的结果。 -
到底是哪个数据库?它可以在 11g XE 上正常工作(即,正如您所希望的那样)。
标签: sql amazon-redshift window-functions