PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL MAX и GROUP BY

Най-кратката (и вероятно най-бързата) заявка би била с DISTINCT ON , PostgreSQL разширение на SQL стандарта DISTINCT клауза:

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

Числата се отнасят за редови позиции в SELECT списък. Можете да изписвате имената на колоните за по-голяма яснота:

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

Резултатът е подреден по id и т.н., които могат или не могат да бъдат добре дошли. Във всеки случай е по-добре от „недефиниран“.

Той също така прекъсва връзките (когато няколко години споделят един и същ максимален брой) по добре дефиниран начин:изберете най-ранната година. Ако не ви пука, изпуснете year от ORDER BY . Или изберете последната година с year DESC .

Замного редове за id , другите техники за заявки са (много) по-бързи. Вижте:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да включите изключените редове в ВРЪЩАНЕ от INSERT ... ПРИ КОНФЛИКТ

  2. Възможно ли е да извършвате запитвания между база данни с PostgreSQL?

  3. отделете името на файла от пътя в postgres

  4. Защита на ниво ред с помощта на Prisma и Postgres

  5. Изпълнете скрипт на обвивка, когато запис в базата данни се запише в postgres