[英]SQL - group for every 2 records
原表:
id rank
A 1
B 1
D 2
E 2
G 3
H 3
I 4
J 5
K 6
L 6
M 7
想再添加一个组列 - 每 2 条记录的值将是 + 1:
id rank group
A 1 1
B 1 1
D 2 1
E 2 1
G 3 2
H 3 2
I 4 2
J 5 3
K 6 3
L 6 3
M 7 4
我能想到的是只能硬编码一个“案例”条件来进行排名。 由于表可能很大,是否有另一个可以动态分组记录的函数?
等级 > 0 且等级 <= 2 然后 1 的情况
当等级 >2 且等级 <=4 时,则为 2
当等级 >4 且等级 <=6 时,3 结束组
....
在将rate
列除以2
后,使用ceil()
函数将是一个直接选项:
SELECT id, rank, ceil( rank / 2 ) as "group"
FROM tab;
顺便说一句,我用"group"
替换了group
,因为它是一个保留关键字
这可以使用dense_rank()
实现
select dense_rank() over (partition by rank % 2 order by id) as grouping, rank
from tableA
order by rank
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.