DISTINCT
chức năng cửa sổ cộng
Thêm DISTINCT
mệnh đề:
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);
Tìm hiểu thêm về DISTINCT
:
Đơn giản hơn và nhanh hơn với DISTINCT ON
PostgreSQL cũng có phần mở rộng này của tiêu chuẩn SQL:
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;
Tìm hiểu thêm về DISTINCT ON
và có thể là các lựa chọn thay thế nhanh hơn:
Trường hợp đơn giản với tổng hợp đơn giản
Nếu trường hợp của bạn thực sự đơn giản như bản demo của bạn (và bạn không cần thêm cột từ hàng cuối cùng đó), một hàm tổng hợp thuần túy sẽ đơn giản hơn:
SELECT a, max(b)
FROM (
VALUES
(1, 'do not want this')
, (1, 'just want this')
) sub(a, b)
GROUP BY a;