выберите максимальное значение каждой группы, включая другой столбец - PullRequest
0 голосов
/ 24 сентября 2018

Выберите максимальное значение для каждой группы

В упомянутом Вопросе есть решение взять максимальное значение для каждой группы.Мне нужна дополнительная помощь. Мне нужно максимальное значение каждой группы и другой столбец (третий столбец) для этого максимального значения.Таблица выглядит следующим образом:

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. Другой столбец может быть любого типа, он не ограничен целым числом, я простохотите получить другой столбец для максимального значения каждой группы.

Ответы [ 4 ]

0 голосов
/ 24 сентября 2018

Вы можете попытаться использовать подзапрос в where, чтобы сделать это.

SELECT * 
FROM T t1
WHERE Value = (
    SELECT MAX(Value) 
    FROM T tt
    WHERE tt.Name  = t1.Name  
)
0 голосов
/ 24 сентября 2018

Один из вариантов использует 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), чтобы получить все связи.

0 голосов
/ 24 сентября 2018

просто используйте 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)
0 голосов
/ 24 сентября 2018

Используйте функцию row_number ():

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