PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Funkcja agregująca PostgreSQL lub funkcja okna zwracająca tylko ostatnią wartość

DISTINCT plus funkcja okna

Dodaj DISTINCT klauzula:

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);

Więcej o DISTINCT :

Prostsze i szybsze dzięki DISTINCT ON

PostgreSQL ma również to rozszerzenie 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;

Więcej o DISTINCT ON i prawdopodobnie szybsze alternatywy:

Prosty przypadek ze zwykłym kruszywem

Jeśli Twoja sprawa jest w rzeczywistości tak prosta jak demo (i nie potrzebujesz dodatkowych kolumn z ostatniego wiersza), zwykła funkcja agregująca będzie prostsza:

SELECT a, max(b)
FROM  (
   VALUES
     (1, 'do not want this')
   , (1, 'just want this')
   ) sub(a, b)
GROUP  BY a;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przekonwertować bazę danych postgres na sqlite

  2. Jak auto-inkrementować w PostgreSQL?

  3. Przechowywanie zagnieżdżonych skrótów w PostgreSQL z Rails 4 (i Hstore)

  4. Autoinkrementacja PostgreSQL

  5. Postgresql:Sprawdź, czy schemat istnieje?