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

PostgreSQL MAX i GROUP BY

Najkrótsze (i prawdopodobnie najszybsze) zapytanie to DISTINCT ON , rozszerzenie PostgreSQL standardu SQL DISTINCT klauzula:

SELECT DISTINCT ON (1)
       id, count, year
FROM   tbl
ORDER  BY 1, 2 DESC, 3;

Liczby odnoszą się do pozycji porządkowych w SELECT lista. Dla jasności możesz przeliterować nazwy kolumn:

SELECT DISTINCT ON (id)
       id, count, year
FROM   tbl
ORDER  BY id, count DESC, year;

Wynik jest uporządkowany według id itp., które mogą, ale nie muszą być mile widziane. W każdym razie jest to lepsze niż „nieokreślone”.

Zrywa również więzi (gdy wiele lat ma tę samą maksymalną liczbę) w dobrze zdefiniowany sposób:wybierz najwcześniejszy rok. Jeśli Ci to nie zależy, upuść year z ORDER BY . Lub wybierz ostatni rok za pomocą year DESC .

Dla wielu wierszy na id , inne techniki zapytań są (znacznie) szybsze. Zobacz:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql regexp_replace

  2. Wyszukiwanie pełnotekstowe Postgresql dla podobnych słów

  3. Zapytanie rekurencyjne z sumą w Postgresie

  4. Wystąpił błąd podczas instalacji pg (0.17.1), a Bundler nie może kontynuować

  5. UPDATE za pomocą ORDER BY