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;