我有一个包含两个字段的数据集,需要在其中为其创建密集排名。如果Field_1不为null,则Field_2为null,反之亦然。
Field_1 Field_2
a
1
2
3
4
b
7
8
9
c
15
20
25
我正在尝试做到这一点
Field_1 Field_2 Field_3
a 1
1 1
2 1
3 1
4 1
b 2
7 2
8 2
9 2
c 3
15 3
20 3
25 3
我可以在以下行中订购数据:
row_number() over (partition by null order by Field_2,Field_1) as Field_3
但这不会给我我所寻找的密集排名。
答案 0 :(得分:0)
假设您确实有某种增量行号列(我们将其称为row_number
),则可以使用windowing子句来计算填充的field_1
值的数目:
COUNT(field_1) OVER (ORDER BY row_number ROWS UNBOUNDED PRECEDING) AS group_number
这使它成为每行计算field_1
排序后在其 之前(包括其自身)的已填充row_number
值的数量的方法。
有关此技术的更多详细信息:https://stackoverflow.com/a/30862368/477563