繁体   English   中英

选择每个组的最大值,包括其他列

[英]select max value of each group including other column

选择每个组的最大值

在提到的问题中,有一个解决方案可以获取每个组的最大值。 我需要更多帮助,我希望每个组的最大值以及该最大值的另一列(有问题的第三列)。 桌子看起来像这样

Name  Value AnotherColumn
Pump1 1000   1
Pump1 2000   2
Pump2 1000   2
Pump2 2000   1

输出应为

Name  Value AnotherColumn
Pump1 2000    2
Pump2 2000    1

我正在使用Microsoft Sql Server2012。另一列可以是任何类型,它不限于整数,我只想获取另一列以获取每个组的最大值。

一种选择使用ROW_NUMBER

SELECT Name, Value, AnotherColumn
FROM
(
    SELECT *, ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Value DESC) rn
    FROM yourTable
) t
WHERE rn = 1

请注意,如果您希望每个名称的所有联系都具有最大值,则可以将ROW_NUMBER替换为RANK (或可能是DENSE_RANK ),以获取所有联系。

使用row_number()函数:

select * from 
(select *, row_number() over (partition by name order by value desc) as rn)a
where rn=1

只需使用group bymax()

select name ,max(value), max(AnotherColumn) 
from t group by Name

您可以使用相关的子查询

 select * from t t1
   where t1.value in (select max(t2.value) from t t2 where t1.name=t2.name)

你可以尝试使用子查询where做出来。

SELECT * 
FROM T t1
WHERE Value = (
    SELECT MAX(Value) 
    FROM T tt
    WHERE tt.Name  = t1.Name  
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM