sql >> Database >  >> RDS >> Oracle

Waarde ophalen op basis van het maximum van een andere kolom gegroepeerd op een andere kolom

U kunt dit benaderen met 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;

Of je dit 'eleganter' vindt, is waarschijnlijk een kwestie van smaak.

Ik moet erop wijzen dat dit subtiel verschilt van uw vraag. Dit levert gegarandeerd één rij op voor elke key; de jouwe kan meerdere rijen retourneren. Als je dat gedrag wilt, gebruik dan gewoon rank() of dense_rank() in plaats van row_number() .




  1. int(11) vs. int(alles anders)

  2. Online schema-upgrade in MySQL Galera-cluster met behulp van de RSU-methode

  3. UniVerse-tips

  4. SQL-query om het N-de hoogste salaris uit een salaristabel te vinden