Select max value of each group
在提到的问题中,有一个解决方案可以获取每个组的最大值。我需要更多帮助,我希望每个组的最大值以及该最大值的另一列(有问题的第三列)。桌子看起来像这样
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。另一列可以是任何类型,它不限于整数,我只想获取另一列以获取每个组的最大值。
答案 0 :(得分:1)
使用row_number()函数:
select * from
(select *, row_number() over (partition by name order by value desc) as rn)a
where rn=1
答案 1 :(得分:1)
一个选项使用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
),以获取所有联系。
答案 2 :(得分:0)
只需使用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)
答案 3 :(得分:0)
您可以尝试在where
中使用子查询来进行创建。
SELECT *
FROM T t1
WHERE Value = (
SELECT MAX(Value)
FROM T tt
WHERE tt.Name = t1.Name
)