【发布时间】:2017-12-17 22:09:16
【问题描述】:
我有这个数据。我想聚合它并在聚合数据上放置一个 row_number。
| ID_1 | time| ID_2 |
a, 1, 36
a, 2, 36
a, 3, 45
a, 4, 65
b, 1, 75
b, 2, 35
b, 3, 35
b, 4, 76
所需的输出看起来像这样。
| ID_1 | ID_2 | Row_number |
a, 36, 1
a, 45, 2
a, 65, 3
b, 75, 1
b, 35, 2
b, 76, 3
我的尝试是使用以下代码:
select
ID_1, ID_2,
row_number() over (partition by ID_1, ID_2 order by time desc) as Row_number
from table1
但这会产生:
| ID_1 | ID_2| Row_number |
a, 36, 1
a, 36, 2
a, 45, 1
a, 65, 1
b, 75, 1
b, 35, 1
b, 35, 2
b, 76, 1
如果我最后使用 group by,我会得到一些时间错误,因为我没有在 group by。
【问题讨论】:
-
我在预期输出中看不到任何聚合。您是否只想删除每个 id1、id2 组合的重复项?
-
好吧,我不想删除重复项,因为时间变量不会是重复项。但我确实想要 ID_1 和 ID_2 的所有唯一组合,然后按时间对它们进行排名。