DISTINCT
plus funkce okna
Přidejte DISTINCT
klauzule:
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);
Další informace o DISTINCT
:
Jednodušší a rychlejší s DISTINCT ON
PostgreSQL má také toto rozšíření standardu 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;
Další informace o DISTINCT ON
a možná rychlejší alternativy:
Jednoduchý případ s prostým agregátem
Pokud váš případ je ve skutečnosti stejně jednoduchý jako vaše ukázka (a nepotřebujete další sloupce z posledního řádku), jednoduchá agregační funkce bude jednodušší:
SELECT a, max(b)
FROM (
VALUES
(1, 'do not want this')
, (1, 'just want this')
) sub(a, b)
GROUP BY a;