繁体   English   中英

SQL - 每 2 条记录分组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM