sql >> Databáze >  >> RDS >> PostgreSQL

Postgresql extrahuje poslední řádek pro každé ID

Nejúčinnějším způsobem je použití Postgres' distinct on operátor

select distinct on (id) id, date, another_info
from the_table
order by id, date desc;

Pokud chcete řešení, které funguje napříč databázemi (ale je méně efektivní), můžete použít funkci okna:

select id, date, another_info
from (
  select id, date, another_info, 
         row_number() over (partition by id order by date desc) as rn
  from the_table
) t
where rn = 1
order by id;

Řešení s funkcí okna je ve většině případů rychlejší než použití dílčího dotazu.



  1. Spouštěče SQL Server:Spouštěče DML

  2. Nastavení a konfigurace skupiny Always-on Availability Group na SQL Server

  3. SQL aritmetické operátory

  4. Postgres:převod jednoho řádku na více řádků (unpivot)