sql - 为具有最低值的每个组选择单个 ID

标签 sql sql-server

考虑下表:

ID      GroupId     Rank
1       1           1
2       1           2
3       1           1
4       2           10
5       2           1
6       3           1           
7       4           5

我需要一个 sql(对于 MS-SQL)选择查询,为每个排名最低的组选择一个 Id。每个组只需要返回一个 ID,即使有两个具有相同等级(如上表中的 1 和 2)。我试图选择最小值,但要求只返回一个,并且要返回的值是 ID 列,这让我很困惑。

有人知道怎么做吗?

最佳答案

使用row_number():

select t.*
from (select t.*,
             row_number() over (partition by groupid order by rank) as seqnum
      from t
     ) t
where seqnum = 1;

关于sql - 为具有最低值的每个组选择单个 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56166830/

相关文章:

sql - Crystal Reports 需要按派生日期范围分组

c# - 使用 LEFT 字符串函数的 SQLKata 内连接

sql - 如何检查SQL Server数据库兼容级别?

java - hibernate 中有没有办法检索快速非阻塞行计数?

sql - 根据交易添加期末余额列(收入-支出)

sql - |DataDirectory| 在哪里定义?

MySQL导入/导出版本不兼容

java - 删除数据库插入的冗余

sql - TSQL "FOR BROWSE"选项的用途是什么?

sql - 在 Postgres 中计算百分比