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
:
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;