sql - 选择组中的最小值

标签 sql sql-server sql-server-2008 sql-server-2012

我有一张 table

ID,  name, pay1, pay2
 1     a,    3,    2
 2     b,   12,    4
 3     b,    4,    8
 4     c,    8,    7
 5     c,    5,    2
 6     a,    7,    1

我想选择每个姓名中 pay1 + pay2 最小的行。所以,我想得到

 ID,  name, pay1, pay2
 1     a,    3,    2
 3     b,    4,    8
 5     c,    5,    2

知道如何在 SQL Server 中执行此操作吗?谢谢

最佳答案

使用排名函数:

with minpay as
(
  select *
    , payrank = row_number() over (partition by name order by pay1 + pay2, ID)
  from pay
)
select ID
  , name
  , pay1
  , pay2
from minpay
where payrank = 1
order by name

SQL Fiddle with demo .

关于sql - 选择组中的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15444429/

相关文章:

sql - 计算一行中的 NULL 数

sql-server - 无法从 Docker 容器连接到 SQL Server

sql-server - 将表达式转换为数据类型日期时间(Int64 到日期时间)时发生算术溢出错误

tsql - 你应该在 NHibernate 和 Sql Server 2008 中使用外连接获取吗?

sql-server-2008 - SQL Server : drop a FK constraint, 不是外键

sql - 如何根据属性值选择前 3 个?

sql - 将临时表传递给 EXEC sp_executesql

Mysql 警告代码 1592 使用语句格式写入二进制日志的不安全语句

php - 使用 LAMP 连接到 MSSQL 服务器

sql - 选择 SQL Server 数据库大小