ROLLUP
ROLLUP ist ein Subklausel der GROUP-BY-Klausel. Zu den einzelnen Subaggregaten einer SELECT-Anweisung mit GROUP-BY-Klausel wird eine zusätzliche Aggregationssebene hinzugefügt, was dem Wegfall einer GROUP-BY-Spalte entspricht.
Die ROLLUP-Klausel wird vorzugsweise im Data-Ware-House-Bereich benutzt.
Beispiele1:
SELECT Abt_nr, Beruf , SUM(Gehalt) FROM Angestellte GROUP BY ROLLUP(Abt_nr, Beruf); -- Bei dieser SELECT-Anweisung werden je Abteilung die Gehälter je Beruf aufsummiert -- und anschließend noch mal komplett über die Abteilung, sowie die Gesamtsumme über alle Berufe und Abteilungen.
Ergebnis der Abfrage:
ABT_NR | BERUF | SUM(GEHALT) |
58830 | ||
1 | 10000 | |
1 | Betriebswirt | 10000 |
2 | 8000 | |
2 | Kaufmann | 4000 |
2 | Betriebswirt | 3500 |
2 | Schreibkraft | 500 |
3 | 10910 | |
3 | Betriebswirt | 7500 |
3 | Schreibkraft | 3410 |
4 | 14720 | |
4 | Kaufmann | 14720 |
5 | 15200 | |
5 | Kaufmann | 15200 |
Beispiele2:
SELECT Abt_nr, Beruf , SUM(Gehalt) FROM Angestellte GROUP BY ROLLUP(Beruf, Abt_nr); -- Bei dieser SELECT-Anweisung werden je Beruf die Gehälter je Abteilung aufsummiert -- und anschließend noch mal komplett über den Beruf, sowie die Gesamtsumme über alle -- Berufe und Abteilungen. Damit hat die Anweisung ein anderes Ergebnis als Beispiel1.
Ergebnis der Abfrage:
ABT_NR | BERUF | SUM(GEHALT) |
1 | Betriebswirt | 10000 |
2 | Kaufmann | 4000 |
2 | Betriebswirt | 3500 |
2 | Schreibkraft | 500 |
3 | Betriebswirt | 7500 |
3 | Schreibkraft | 3410 |
4 | Kaufmann | 14720 |
5 | Kaufmann | 15200 |
58830 | ||
Betriebswirt | 21000 | |
Schreibkraft | 3910 | |
Kaufmann | 33920 |
ROLLUP und CUBE-Klauseln können noch mal über die GROUPING-Klausel verfeinert werden.
siehe auch: HAVING-Klausel, Gruppenfunktionen, ROLLUP, GROUPING, GROUPING-SETS, GROUP-BY-Klausel
Quellen:
- ANSI/ISO/IEC 9075-1:2008. Part 1 "SQL/Framework", ISO International Organization for Standardization / ANSI American National Standards Institute, September 2008
- ANSI/ISO/IEC 9075-2:2008. Part 2 "SQL/Foundation", ISO International Organization for Standardization / ANSI American National Standards Institute, Dezember 2008
- Elmasri, Ramez/Navathe, Shamkant B.: "Grundlagen von Datenbanksystemen" , Pearson Studium, München, 2002, ISBN 3-8273-7021-3
- Melton, Jim/Simon, Alan R.: "SQL: 1999 - Understanding Relational Language Components", Morgan Kaufmann, San Francisco, 2001, ISBN 1558604561
- Oracle® Database SQL Language Reference 11g Release 2 (11.2), E17118-03, August 2010, http://download.oracle.com/docs/cd/E11882_01/server.112/e17118.pdf
- Saake, Gunter/Sattler, Kai-Uwe/Heuer, Andreas: "Datenbanken - Konzepte und Sprachen", mitp-Verlag, Redline GmbH, Heidelberg, 2007, ISBN 3-8266-1664-2