PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgresql извлича последния ред за всеки идентификатор

Най-ефективният начин е да използвате distinct on на Postgres оператор

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

Ако искате решение, което работи в различни бази данни (но е по-малко ефективно), можете да използвате функция прозорец:

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;

Решението с функция прозорец в повечето случаи е по-бързо от използването на подзаявка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ГРЕШКА:колона за релация не съществува PostgreSQL, Не може да се изпълни заявка за вмъкване

  2. Разлика в производителността:условието е поставено в клауза INNER JOIN спрямо WHERE

  3. Изчислете броя на едновременните събития в SQL

  4. Заявка с LEFT JOIN не връща редове за брой 0

  5. GROUP BY и агрегирани последователни числови стойности