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

PostgreSQL MAX dan GROUP BY

Kueri terpendek (dan mungkin tercepat) adalah dengan DISTINCT ON , ekstensi PostgreSQL dari standar SQL DISTINCT klausa:

SELECT DISTINCT ON (1)
       id, count, year
FROM   tbl
ORDER  BY 1, 2 DESC, 3;

Angka mengacu pada posisi ordinal di SELECT daftar. Anda dapat mengeja nama kolom untuk kejelasan:

SELECT DISTINCT ON (id)
       id, count, year
FROM   tbl
ORDER  BY id, count DESC, year;

Hasilnya diurutkan berdasarkan id dll. yang mungkin diterima atau tidak. Ini lebih baik daripada "tidak terdefinisi" dalam hal apa pun.

Ini juga memutuskan ikatan (ketika beberapa tahun berbagi jumlah maksimum yang sama) dengan cara yang ditentukan dengan baik:pilih tahun paling awal. Jika Anda tidak peduli, masukkan year dari ORDER BY . Atau pilih tahun terakhir dengan year DESC .

Untuk banyak baris per id , teknik kueri lainnya (jauh) lebih cepat. Lihat:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLalchemy tidak menemukan tabel untuk membuat kunci asing

  2. Apakah kueri jenis SELECT satu-satunya jenis yang dapat disarangkan?

  3. Temukan ukuran byte baris di PostgreSQL

  4. Mendapatkan tidak dapat melakukan ketika autocommit diaktifkan pengecualian saat bekerja dengan CachedRowSet di JDBC

  5. Pilih hingga baris cocok di postgresql?