首页 > 解决方案 > 选择每个组的最大值,包括其他列

问题描述

选择每组的最大值

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

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 Server 2012。另一列可以是任何类型,不限于整数,我只想获取另一列作为每个组的最大值。

标签: sqlsql-servergreatest-n-per-group

解决方案


一种选择使用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_NUMBERRANK(或可能DENSE_RANK)替换以获取所有关系。


推荐阅读