[英]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 by
和max()
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.