sql >> Databáze >  >> RDS >> Oracle

Získejte hodnotu na základě max. z jiného sloupce seskupeného podle jiného sloupce

Můžete to provést pomocí 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;

Zda to považujete za „elegantnější“, je pravděpodobně věcí vkusu.

Měl bych zdůraznit, že se to mírně liší od vašeho dotazu. To je zaručeno, že vrátí jeden řádek pro každý key; váš může vrátit více řádků. Pokud chcete toto chování, stačí použít rank() nebo dense_rank() místo row_number() .




  1. Nastavení a údržba replikace PostgreSQL pomocí Ansible

  2. 4 důvody, proč byste měli ve svém plánování na rok 2020 upřednostňovat monitorování databáze

  3. Jaký je rozdíl mezi USER() a SYS_CONTEXT('USERENV','CURRENT_USER')?

  4. Nastavení optimálního prostředí pro PostgreSQL