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

Agregat PostgreSQL atau fungsi jendela untuk mengembalikan nilai terakhir saja

DISTINCT ditambah fungsi jendela

Tambahkan DISTINCT klausa:

SELECT DISTINCT a
     , last_value(b) OVER (PARTITION BY a ORDER BY b
                           RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
FROM  (
   VALUES
     (1, 'do not want this')
    ,(1, 'just want this')
   ) sub(a, b);

Selengkapnya tentang DISTINCT :

Lebih sederhana dan lebih cepat dengan DISTINCT ON

PostgreSQL juga memiliki ekstensi standar SQL ini:

SELECT DISTINCT ON (a)
       a, b
FROM  (
   VALUES
     (1, 'do not want this')
   , (1, 'just want this')
   ) sub(a, b)
ORDER  BY a, b DESC;

Selengkapnya tentang DISTINCT ON dan mungkin alternatif yang lebih cepat:

Kasus sederhana dengan agregat polos

Jika kasus Anda sebenarnya sesederhana demo Anda (dan Anda tidak memerlukan kolom tambahan dari baris terakhir itu), fungsi agregat biasa akan lebih sederhana:

SELECT a, max(b)
FROM  (
   VALUES
     (1, 'do not want this')
   , (1, 'just want this')
   ) sub(a, b)
GROUP  BY a;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pivot di Postgresql dengan tanda TRUE/FALSE

  2. Memanggil prosedur tersimpan di Postgresql melalui F# dan Npgsql

  3. Bagaimana cara menambahkan kolom dalam tabel menggunakan migrasi laravel 5 tanpa kehilangan datanya?

  4. Persimpangan beberapa array di PostgreSQL

  5. Apakah ukuran yang dideklarasikan bidang varchar berdampak pada PostgreSQL?