SQL Server Query for Rank (RowNumber) and Groupings(排名 (RowNumber) 和分组的 SQL Server 查询)
问题描述
我有一个包含一些列的表:用户、类别、值
I have a table that has some columns: User, Category, Value
并且我想进行一个查询,该查询将按值为我提供所有用户的排名,但针对类别进行重置.
And I want to make a query that will give me a ranking, of all the users by the value, but reset for the category.
示例:
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
有什么想法吗?
我编写了查询并指定了类别,它可以工作,但随后我必须编写循环并且它非常慢.
I write the query and specify the Category, It works but then I have to write loops and its very slow.
推荐答案
在排名函数中使用Partition by"OVER 子句
Use "Partition by" in the ranking function OVER clause
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
这篇关于排名 (RowNumber) 和分组的 SQL Server 查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:排名 (RowNumber) 和分组的 SQL Server 查询


- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- SQL 临时表问题 2022-01-01
- 更改自动增量起始编号? 2021-01-01
- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01