SQL: поиск максимальной записи для каждой группы
Возможный дубликат:
Получение последней записи в каждой группе
У меня есть одна таблица, которая имеет три поля и данные.
Name , Top , Total
cat , 1 , 10
dog , 2 , 7
cat , 3 , 20
horse , 4 , 4
cat , 5 , 10
dog , 6 , 9
Я хочу выбрать запись с самым высоким значением Total
для каждого Name
, поэтому мой результат должен быть таким:
Name , Top , Total
cat , 3 , 20
horse , 4 , 4
Dog , 6 , 9
Я попробовал группу по порядку имен по сумме, но она дает самую большую запись группы по результату. Может ли кто-нибудь вести меня, пожалуйста?
Ответы
Ответ 1
select
Name, Top, Total
from
sometable
where
Total = (select max(Total) from sometable i where i.Name = sometable.Name)
или
select
Name, Top, Total
from
sometable
inner join (
select max(Total) Total, Name
from sometable
group by Name
) as max on max.Name = sometable.Name and max.Total = sometable.Total
Ответ 2
Вы можете попробовать что-то вроде
SELECT s.*
FROM sometable s INNER JOIN
(
SELECT Name,
MAX(Total) MTotal
FROM sometable
GROUP BY Name
) sMax ON s.Name = sMax.Name
AND s.Total = sMax.MTotal
Ответ 3
Или используя предложение Exists, которое возвращает единственную строку, которая существует в обеих таблицах
SELECT * from sometable T
where exists
(select 1
from (SELECT nombre, max(total) as total FROM sometable TT
GROUP by nombre) TT
where T.name=TT.name
and T.total=TT.total
)