habilitar - select max sql server ejemplos
SQL: Encuentra el registro máximo por grupo (3)
O usando una cláusula Exists, que devuelve la única fila que existe en ambas tablas
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
)
Posible duplicado:
Recuperando el último registro en cada grupo
Tengo una tabla, que tiene tres campos y datos.
Name , Top , Total cat , 1 , 10 dog , 2 , 7 cat , 3 , 20 horse , 4 , 4 cat , 5 , 10 dog , 6 , 9
Quiero seleccionar el registro que tiene el valor más alto de Total
para cada Name
, por lo que mi resultado debería ser así:
Name , Top , Total cat , 3 , 20 horse , 4 , 4 Dog , 6 , 9
Probé el orden de grupo por nombre por total, pero da el registro más alto de grupo por resultado. ¿Alguien puede guiarme, por favor?
Puedes intentar algo como
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
select
Name, Top, Total
from
sometable
where
Total = (select max(Total) from sometable i where i.Name = sometable.Name)
o
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