首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据列值按组计数查询中的记录

根据列值按组计数查询中的记录
EN

Stack Overflow用户
提问于 2016-12-21 15:05:31
回答 2查看 42关注 0票数 2

让我们假设SQL中有一个非常简单的查询

代码语言:javascript
复制
SELECT Col1,Col2 From Table1

它给我的结果是:

代码语言:javascript
复制
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中的值相等,那么它们应该有不同的数字,如示例所示

所以我想要

代码语言:javascript
复制
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

有什么办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-21 15:07:13

如果数据库支持窗口函数,请使用ROW_NUMBER

代码语言:javascript
复制
select col1,col2,row_number() over(partition by col1 order by col2) as nr
from tablename

如果数据库不支持窗口函数,请使用

代码语言:javascript
复制
select col1,col2,
(select count(*)+1 from tablename t1 where t1.col1=t.col1 and t1.col2<t.col2) as nr
from tablename t
票数 3
EN

Stack Overflow用户

发布于 2016-12-21 15:08:34

您可以使用row_number窗口函数:

代码语言:javascript
复制
SELECT   col1,
         col2,
         ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col2 ASC) AS Nr
FROM     table1
ORDER BY 1, 2, 3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41265869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档