Oracle
 sql >> Base de données >  >> RDS >> Oracle

Obtenir la valeur en fonction du maximum d'une colonne différente regroupée par une autre colonne

Vous pouvez aborder cela en utilisant 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;

Que vous considériez cela comme plus "élégant" est probablement une question de goût.

Je dois souligner que cela est subtilement différent de votre requête. Ceci est garanti pour retourner une ligne pour chaque key; le vôtre pourrait renvoyer plusieurs lignes. Si vous voulez ce comportement, utilisez simplement rank() ou dense_rank() au lieu de row_number() .