[英]Count records in query in groups based on column value
假设在SQL中有一个非常简单的查询
SELECT Col1,Col2 From Table1
它给我结果:
Col1 Col2
A 5
A 7
A 2
B 1
B 1
B 4
B 0
C 4
C 1
C 2
我想按Col1进行分组并按Col2进行顺序对行进行计数。 如果Col2中组中某些行的值相等,则它们应具有不同的数字,如示例所示
所以我想要
Col1 Col2 Nr
A 5 2
A 7 3
A 2 1
B 0 1
B 1 2
B 1 3
B 4 4
C 4 3
C 1 1
C 2 2
任何想法如何做到这一点?
如果您的数据库支持窗口函数,请使用ROW_NUMBER
select col1,col2,row_number() over(partition by col1 order by col2) as nr
from tablename
如果您的数据库不支持窗口功能,请使用
select col1,col2,
(select count(*)+1 from tablename t1 where t1.col1=t.col1 and t1.col2<t.col2) as nr
from tablename t
您可以使用row_number
窗口函数:
SELECT col1,
col2,
ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col2 ASC) AS Nr
FROM table1
ORDER BY 1, 2, 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.