DISTINCT
plus fönsterfunktion
Lägg till en DISTINCT
klausul:
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);
Mer om DISTINCT
:
Enklare och snabbare med DISTINCT ON
PostgreSQL har även denna utvidgning av SQL-standarden:
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;
Mer om DISTINCT ON
och möjligen snabbare alternativ:
Enkelt fodral med vanligt aggregat
Om ditt fall är faktiskt lika enkelt som din demo (och du behöver inte ytterligare kolumner från den sista raden), en vanlig aggregatfunktion blir enklare:
SELECT a, max(b)
FROM (
VALUES
(1, 'do not want this')
, (1, 'just want this')
) sub(a, b)
GROUP BY a;