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

Bagaimana cara memilih id dengan grup tanggal maksimum berdasarkan kategori di PostgreSQL?

Ini adalah kasus penggunaan yang sempurna untuk DISTINCT ON - ekstensi khusus Postgres dari DISTINCT standard standar :

SELECT DISTINCT ON (category)
       id  -- , category, date  -- any other column (expression) from the same row
FROM   tbl
ORDER  BY category, date DESC;

Hati-hati dengan urutan pengurutan menurun. Jika kolomnya bisa NULL, Anda mungkin ingin menambahkan NULLS LAST :

  • Urutkan menurut kolom ASC, tetapi nilai NULL terlebih dahulu?

DISTINCT ON sederhana dan cepat. Penjelasan terperinci dalam jawaban terkait ini:

  • Pilih baris pertama di setiap grup GROUP BY?

Untuk tabel besar dengan banyak baris per category pertimbangkan pendekatan alternatif:

  • Optimalkan kueri GROUP BY untuk mengambil baris terbaru per pengguna
  • Optimalkan kueri maksimum berdasarkan grup


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. file input tampaknya menjadi dump format teks. Silakan gunakan psql

  2. Impor Perpustakaan psycopg2 tidak dimuat:libssl.1.0.0.dylib

  3. Alias ​​referensi dalam klausa WHERE

  4. Bagaimana saya bisa memulai PostgreSQL di Windows?

  5. Pernyataan GROUP BY + CASE