DISTINCT
plus Fensterfunktion
Fügen Sie ein DISTINCT
hinzu Klausel:
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);
Mehr über DISTINCT
:
Einfacher und schneller mit DISTINCT ON
PostgreSQL hat auch diese Erweiterung des SQL-Standards:
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;
Mehr über DISTINCT ON
und eventuell schnellere Alternativen:
Einfaches Gehäuse mit glattem Aggregat
Wenn Ihr Fall ist eigentlich so einfach wie Ihre Demo (und Sie brauchen keine zusätzlichen Spalten aus dieser letzten Zeile), eine einfache Aggregatfunktion wird einfacher sein:
SELECT a, max(b)
FROM (
VALUES
(1, 'do not want this')
, (1, 'just want this')
) sub(a, b)
GROUP BY a;