Verwenden von DISTINCT ON zur Auswahl der ID mit maximalem Datum gruppiert nach Kategorie in PostgreSQL
Um die ID mit dem maximalen Datum innerhalb jeder Kategorie auszuwählen, Postgres bietet eine leistungsstarke Funktion namens DISTINCT ON. Unten ist die Abfrage, um dies zu erreichen:
SELECT DISTINCT ON (category) id -- , category, date -- any other column (expression) from the same row FROM tbl ORDER BY category, date DESC;
DISTINCT ON unterscheidet Zeilen basierend auf einer angegebenen Spalte und nachfolgende Zeilen werden basierend auf der Sortierreihenfolge gefiltert. Durch die Anordnung der Zeilen in absteigender Reihenfolge des Datums innerhalb jeder Kategorie stellt DISTINCT ON das maximale Datum für jede Kategorie bereit.
Achtung: Stellen Sie sicher, dass die Datumsspalte nicht NULL ist, wie dies bei NULL-Werten der Fall ist beeinflussen die Sortierreihenfolge. Bei Bedarf können Sie NULLS LAST hinzufügen, um NULL-Werte zu verarbeiten.
DISTINCT ON bietet Einfachheit und Effizienz. Seine Leistung ist besonders effektiv bei kleineren Datensätzen. Für größere Datensätze mit zahlreichen Zeilen pro Kategorie sind möglicherweise alternative Ansätze geeigneter, wie beispielsweise die im Abschnitt „Verwandte Fragen zum Stapelüberlauf“ genannten.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von DISTINCT ON effizient die ID mit dem maximalen Datum für jede Kategorie in PostgreSQL auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!