繁体   English   中英

根据列值按组对查询中的记录进行计数

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

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