PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Tertinggi per setiap grup

Solusi spesifik (dan tercepat) Postgres:

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

Solusi SQL standar menggunakan fungsi jendela (tercepat kedua)

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;

Perhatikan bahwa kedua solusi hanya akan mengembalikan setiap id sekali, meskipun ada beberapa out_id nilai-nilai yang sama. Jika Anda ingin semuanya dikembalikan, gunakan dense_rank() bukannya 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. Bagaimana cara mengembalikan hasil fungsi postgresql di c #? Keluaran konsol kosong

  2. Operator tidak ada:integer =? saat menggunakan Postgres

  3. Mengapa PostgreSQL melakukan pemindaian berurutan pada kolom yang diindeks?

  4. Kesalahan jenis pernyataan Kasus Bersarang (postgres)

  5. Mengatur nama skema di postgres menggunakan R