admin

SQL Server查询等级(行号)和分组

sql

我有一个包含一些列的表:用户,类别,值

我想进行查询,以按值对所有用户进行排名,但将类别重置。

例子:

user1   CategoryA 10
user2   CategoryA 11
user3   CategoryA 9
user4   CategoryB 3
user1   CategoryB 11

查询将返回:

Rank  User   Category  
1     user2   CategoryA
2     user1   CategoryA
3     user3   CategoryA
1     user1   CategoryB
2     user4   CategoryB

有任何想法吗?

我编写查询并指定类别,它可以工作,但随后我必须编写循环,而且循环非常慢。


阅读 209

收藏
2021-05-10

共1个答案

admin

在排名函数OVER子句中使用“分区依据”

SELECT
    Rank() over (Partition by Category Order by Value, User, Category) as ranks,
    Category, User
FROM 
    Table1
Group By
    User, Category, Value 
Order by
    ranks asc
2021-05-10