DISTINCT
plus fonction fenêtre
Ajouter un DISTINCT
clause :
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);
En savoir plus sur DISTINCT
:
Plus simple et plus rapide avec DISTINCT ON
PostgreSQL possède également cette extension du standard 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;
En savoir plus sur DISTINCT ON
et éventuellement des alternatives plus rapides :
Cas simple avec agrégat simple
Si votre cas est en fait aussi simple que votre démo (et vous n'avez pas besoin de colonnes supplémentaires à partir de cette dernière ligne), une simple fonction d'agrégation sera plus simple :
SELECT a, max(b)
FROM (
VALUES
(1, 'do not want this')
, (1, 'just want this')
) sub(a, b)
GROUP BY a;