sql >> Database >  >> RDS >> PostgreSQL

Hoe id met max datumgroep per categorie selecteren in PostgreSQL?

Dit is een perfecte use-case voor DISTINCT ON - een Postgres-specifieke uitbreiding van de standaard DISTINCT :

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

Pas op met aflopende sorteervolgorde. Als de kolom NULL kan zijn, wil je misschien NULLS LAST . toevoegen :

  • Sorteren op kolom ASC, maar NULL-waarden eerst?

DISTINCT ON is eenvoudig en snel. Gedetailleerde uitleg in dit gerelateerde antwoord:

  • Selecteer de eerste rij in elke GROUP BY-groep?

Voor grote tabellen met veel rijen per category overweeg een alternatieve aanpak:

  • Optimaliseer de GROUP BY-query om de laatste rij per gebruiker op te halen
  • Optimaliseer groepsgewijze maximale zoekopdracht


  1. Breid EM Grid Control uit naar nieuwe nodes

  2. Groepeer op kolom en meerdere rijen in één rij meerdere kolommen

  3. Stel de tekenset en sortering van een kolom in MariaDB in

  4. Hoe kan ik vanuit mijn C#-code in een op SQL Server opgeslagen proces stappen?