SQL 基于多列创建密集排名
SQL create dense rank based on mulitple columns
我有一个包含两个字段的数据集,我需要为其创建密集排名。当 Field_1 不为空时 Field_2 为空,反之亦然。
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
但这并没有给我想要的密集排名。
假设您确实有某种增量行号列(我们称之为 row_number
),您可以使用窗口子句来计算填充的 field_1
值的数量:
COUNT(field_1) OVER (ORDER BY row_number ROWS UNBOUNDED PRECEDING) AS group_number
这使得每行计算 在 它(包括它自己)之前 field_1
的填充值的数量 row_number
.
以下是有关该技术的更多详细信息:
我有一个包含两个字段的数据集,我需要为其创建密集排名。当 Field_1 不为空时 Field_2 为空,反之亦然。
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
但这并没有给我想要的密集排名。
假设您确实有某种增量行号列(我们称之为 row_number
),您可以使用窗口子句来计算填充的 field_1
值的数量:
COUNT(field_1) OVER (ORDER BY row_number ROWS UNBOUNDED PRECEDING) AS group_number
这使得每行计算 在 它(包括它自己)之前 field_1
的填充值的数量 row_number
.
以下是有关该技术的更多详细信息: