- Entfernt die
Group By All-Klausel manchmal, wenn sie zu einem Fehler führt, der ohnegroup bynicht auftritt
Einige Systeme unterstützen eine spezielle Group By All-Syntax als Kurzform zur Auflistung aller Select-Klausel Elemente, die keine Aggregatfunktion enthalten. Damit lässt sich die doppelte Auflistung der Select-Spalte in der Group By-Klausel auch vermeiden.
SELECT customers.id, customers.name, count(orders.id)
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id
GROUP BY ALLDas ist gleichwertig als würde man customers.id und customers.name explizit in der Group By-Klausel anführen.
Voraussichtlich in PostgreSQL 19
Weiterführende Links
Normative Referenzen
Die oben beschriebene Group By All Syntax ist nicht in ISO/IEC 9075-2:2023 standardisiert. Das Schlüsselwort all darf nicht mit jenem aus dem <set quantifier> verwechselt werden, welcher in group by auch erlaubt ist (T434, “GROUP BY DISTINCT”).
Voraussichtlich im nächsten Standard
Diese Funktion ist voraussichtlich im nächsten SQL-Standard. Da der Standard trozdem nur Spaltenreferenzen in der Group By-Klausel erlaubt ist Group By All nicht standard-konform, wenn dadurch Ausdrücke in den Gruppierungsschlüssel wandern.
Da die meisten Systeme jedoch Ausdrücke in Group By unterstützen gibt es eine Normierungslücke, die in manchen Fällen zu unterschiedlichen Ergebnissen bei unterschiedlichen Systemen führt, z. B. hier: select a + COUNT(*) OVER()✓✗.

