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

Jak wybrać id z maksymalną grupą dat według kategorii w PostgreSQL?

Jest to idealny przypadek użycia dla DISTINCT ON - specyficzne dla Postgres rozszerzenie standardu DISTINCT :

SELECT DISTINCT ON (category)
       id  -- , category, date  -- any other column (expression) from the same row
FROM   tbl
ORDER  BY category, date DESC;

Ostrożnie z malejącym porządkiem sortowania. Jeśli kolumna może mieć wartość NULL, możesz dodać NULLS LAST :

  • Sortować według kolumny ASC, ale najpierw wartości NULL?

DISTINCT ON jest prosty i szybki. Szczegółowe wyjaśnienie w tej powiązanej odpowiedzi:

  • Wybrać pierwszy wiersz w każdej grupie GROUP BY?

Dla dużych tabel z wieloma wierszami na category rozważ alternatywne podejście:

  • Zoptymalizuj zapytanie GROUP BY, aby pobrać ostatni wiersz na użytkownika
  • Optymalizuj maksymalne zapytanie grupowe


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bezpiecznie zmieniaj nazwy tabel za pomocą kolumn klucza podstawowego szeregowego

  2. Jak Atanh() działa w PostgreSQL

  3. Co nowego w PostgreSQL 11

  4. Optymalizacja zapytań w PostgreSQL. WYJAŚNIJ podstawy – część 2

  5. Indeksowane ORDER BY z LIMIT 1