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

Най-висока за всяка група

Специфично за Postgres (и най-бързо) решение:

select distinct on (out_id) *
from foo
order by out_id, id desc;

Стандартно SQL решение, използващо прозоречна функция (второ най-бързо)

select id, x_part, y_part, out_id, out_idx
from (
  select id, x_part, y_part, out_id, out_idx, 
         row_number() over (partition by out_id order by id desc) as rn
  from foo
) t
where rn = 1
order by id;

Имайте предвид, че и двете решения ще върнат само всеки id веднъж, дори ако има няколко out_id стойности, които са еднакви. Ако искате да бъдат върнати всички, използвайте dense_rank() вместо row_number()



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Можем ли винаги да извличаме колона с дата като низ (varchar) с knex и postgres?

  2. mkdir /mnt/data:файлова система само за четене Back-off рестартиране неуспешно postgres контейнер

  3. psql:не можа да се свърже със сървър:Няма такъв файл или директория (Mac OS X)

  4. PostgreSQL:ST_GeomFromText(unknown) не съществува

  5. Обединяване на най-новите присъединени записи на седмица