Gruppenfunktionen

Die SQL-Funktionen werden in Single-Row-Funktionen und Multiple-Row-Funktionen oder auch Gruppenfunktionen unterschieden. Die Gruppenfunktionen fassen Werte aus unterschiedlichen Datensätzen in einer Spalte zu genau einem Wert zusammen. NULL-Werte werden dabei nicht berücksichtigt.bzw. verfälschen das Ergebnis. Daher ist die NVL-Funktion notwendig, wenn NULL-Werte in der Spalte auftauchen. Gruppenfunktionen werden auch als Aggregatfunktionen bezeichnet.

SQL-Gruppenfunktionen (Auszug)

FunktionBedeutung
COUNTAnzahl der Werte in einer Spalte
SUM?Summe der Werte in einer Spalte
AVGMittelwert der Spalte
MAX?Größter Wert der Spalte
MINKleinster Wert der Spalte
RANKBerechnet den Rang eines Wertes

Gruppenfunktionen können in einer SELECT-Klausel, einer HAVING-Klausel und/oder einer ORDER-BY-Klausel eingesetzt werden, aber nicht in einer WHERE-Klausel oder GROUP-BY-Klausel, da sie sich auf Gruppen von Werten, nicht auf einzelne Werte beziehen.

Gruppenfunktionen können mit Single-Row-Funktionen verschachtelt werden, wenn die Datentypen passen. Es ist auch möglich, Gruppenfunktionen untereinander zu verschachteln, allerdings unter Oracle-SQL nur bis zur Stufe 2 und auch nur, wenn die Aggregationsstufen zueinander passen.

Beispiele

 SELECT MIN(ROUND(GEHALT, 2)) FROM Angestellte      --korrekte Syntax
 GROUP BY ABT_NR;

 SELECT COUNT(AVG(Gehalt)) FROM Angestellte         --korrekte Syntax, zählt Anzahl der Abteilungen
 GROUP BY ABT_NR;

 SELECT MAX(COUNT(AVG(Gehalt))) FROM Angestellte    --wirft einen Fehler, da dreistufig
 GROUP BY ABT_NR;

 SELECT Nachname, AVG(MAX(gehalt))FROM Angestellte  --wirft einen Fehler, 
 GROUP BY ABT_NR                                    --da der Nachname eine andere Aggregationsstufe hat als AVG(MAX(gehalt));

 SELECT AVG(MAX(gehalt))  FROM Angestellte          --korrekte Syntax. 
 GROUP BY ABT_NR;                                   --Berechnet das durchschnittliches maximales   Gehalt je Abteilung;

 SELECT COUNT(NVL(BLZ, 0))                          -- Berechnet die Anzahl der Kunden, deren BLZ einen NULL-Wert hat.
 FROM KUNDEN                                        -- Die Funktion NVL ist hier notwendig, da sonst COUNT(BLZ) = 0 ist, 
 WHERE BLZ IS NULL;                                 -- wenn eine BLZ in der Spalte den Wert NULL hat

Die Liste der Gruppenfunktionen ist nicht komplett. Die komplette Syntax finden Sie unter:

Quellen:

  • Quellen/Standards in http://www.wiscorp.com/SQLStandards.html und http://www.jcc.com/sql.htm
  • INCITS/ISO/IEC 9075-1-2008. Part 1 "SQL/Framework", ISO International Organization for Standardization / INCITS InterNational Committee for Information Technology Standards, 2008
  • INCITS/ISO/IEC 9075-1-2008. Part 2 "SQL/Foundation", ISO International Organization for Standardization / INCITS InterNational Committee for Information Technology Standards, 2008
  • Adams, Ralf: "SQL - Eine Einführung mit vertiefenden Exkursen", Hanser, München, 2012, ISBN 978-3-446-43200-0
  • Elmasri, Ramez/Navathe, Shamkant B.: "Grundlagen von Datenbanksystemen" , Pearson Studium, München, 2002, ISBN 3-8273-7021-3
  • Faeskorn-Woyke, Heide/Bertelsmeier, Birgit/Riemer, Petra/Bauer, Elena: "Datenbanksysteme - Theorie und Praxis mit SQL2003, Oracle und MySQL", Pearson Education, München, 2007, ISBN 978-3-8273-7266-6
  • Kemper, Alfons/Eickler, André: "Datenbanksysteme", Oldenbourg, München, 2009, 978-3-486-59018-0
  • 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
  • Sieben, Jürgen: "Oracle® SQL - Das umfassende Handbuch", Galileo Press, 2012, ISBN 978-3-8362-1875-7
  • Vossen, Gottfried: "Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme", Oldenbourg, München, 2008, ISBN 978-3-486-27574-2

Kategorie: SQL, G