Rollup
Die Rollup-Syntax erzeugt Aggregationsergebnisse auf mehreren Gruppierungsebenen in einem einzigen Ergebnisset. Der folgende Befehl z. B. gibt die Anzahlen auf drei Gruppierungsebenen zurück:
SELECT <col1>, <col2>, COUNT(*) FROM <table> GROUP BY ROLLUP (col1,
col2);
Die Gruppierungsebenen werden wie folgt zurückgegeben, mit Ergebnissen, als wären gleichzeitig die GROUP BY-Optionen angegeben:
GROUP BY col1, col2
GROUP BY col1
GROUP BY ()
Die Syntax von GROUP BY () entspricht der Angabe eines Gesamtaggregats (als gäbe es überhaupt keine Gruppen).
Das Ergebnis der vorherigen Rollup-Operation entspricht dem folgenden UNION-Ergebnis:
SELECT col1, col2, COUNT(*) FROM <table> GROUP BY col1, col2 UNION ALL
SELECT col1, null as col2, count(*) FROM <table> GROUP BY col1 UNION
ALL
SELECT null as col1, null as col2, count(*) FROM <table>;
Betrachten Sie das folgende Beispiel:
SELECT state, city, COUNT(*) FROM citizens GROUP BY ROLLUP (state,
city);
Dieses Beispiel liefert die folgenden Ergebnisse:
- Anzahl für jeden Bundesstaat/Ort
- Anzahl für jeden Bundesstaat
- Gesamtanzahl