Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Obter valor com base no máximo de uma coluna diferente agrupada por outra coluna


Você pode abordar isso usando row_number() :
select key, val
from (select t.*, row_number() over (partition by key order by num desc) as seqnum
      from table_name t
     ) t
where seqnum = 1;

Se você considera isso mais "elegante" é provavelmente uma questão de gosto.

Devo salientar que isso é sutilmente diferente da sua consulta. Isso garante o retorno de uma linha para cada key; o seu pode retornar várias linhas. Se você quiser esse comportamento, basta usar rank() ou dense_rank() em vez de row_number() .