DISTINCT
mais função de janela
Adicione um
DISTINCT
cláusula: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);
Mais sobre
DISTINCT
:Mais simples e rápido com DISTINCT ON
O PostgreSQL também possui esta extensão do padrão 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;
Mais sobre
DISTINCT ON
e possivelmente alternativas mais rápidas:Caso simples com agregado simples
Se seu caso é realmente tão simples quanto sua demonstração (e você não precisa de colunas adicionais dessa última linha), uma função de agregação simples será mais simples:
SELECT a, max(b)
FROM (
VALUES
(1, 'do not want this')
, (1, 'just want this')
) sub(a, b)
GROUP BY a;