DISTINCT
плюс функция прозорец
Добавете DISTINCT
клауза:
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);
Повече за DISTINCT
:
По-просто и по-бързо с DISTINCT ON
PostgreSQL също има това разширение на 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;
Повече за DISTINCT ON
и евентуално по-бързи алтернативи:
Прост случай с обикновен агрегат
Ако вашият случай всъщност е толкова прост, колкото вашата демонстрация (и нямате нужда от допълнителни колони от този последен ред), обикновена обобщена функция ще бъде по-проста:
SELECT a, max(b)
FROM (
VALUES
(1, 'do not want this')
, (1, 'just want this')
) sub(a, b)
GROUP BY a;