Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Mengenfunktionen

Mengenfunktionen bestimmen Durchschnitt, Anzahl, Maximum, Minimum und Summe einer Menge von Werten bzw. die Anzahl der Sätze einer Ergebnistabelle.


mengenfunktion ::= { operator ([ ALL | DISTINCT ] ausdruck ) | COUNT(*) }

operator ::= {AVG | COUNT | MAX | MIN | SUM }



ausdruck

Ausdruck, der die Werte in der Menge bestimmt (siehe Abschnitt „Ausdruck").

Für jede Mengenfunktion außer COUNT(*) ist festgelegt, welche Datentypen ausdruck haben darf. In der Funktionsbeschreibung sind für jede Funktion die erlaubten Datentypen angegeben.

Für ausdruck gelten folgende Einschränkungen:

    • ausdruck darf keine multiple Spalte enthalten.

    • ausdruck darf keine Mengenfunktion enthalten.

    • ausdruck darf keine Unterabfrage enthalten.

    • Wenn ein Spaltenname in ausdruck eine Spalte eines übergeordneten Abfrage-Ausdrucks angibt (Außenreferenz), darf ausdruck nur diesen Spaltennamen enthalten.

      Die Mengenfunktion muss dann eine der beiden folgenden Bedingungen erfüllen:

      • Die Mengenfunktion ist in einer SELECT-Liste enthalten.

      • Die Mengenfunktion ist in einer Unterabfrage einer HAVING-Klausel enthalten. Der Spaltenname muss eine Spalte des SELECT-Ausdrucks angeben, der die HAVING-Klausel enthält.

      Die Mengenfunktionen MIN() und MAX() beziehen sich auf die Menge aller Werte einer Spalte in einer Tabelle. Sie unterscheiden sich dadurch von einem CASE-Ausdruck mit MIN / MAX (siehe "CASE-Ausdruck mit MIN / MAX"), der sich auf unterschiedliche Ausdrücke bezieht.

Mengenfunktion berechnen

Bei allen Mengenfunktionen außer COUNT(*) bestimmt der als Funktionsargument angegebene Ausdruck die Menge von Werten, auf die die Mengenfunktion angewendet wird.

Enthält der SELECT-Ausdruck bzw. die SELECT-Anweisung, in dem (der) die Mengenfunktion vorkommt, keine GROUP BY-Klausel, wird der Argumentausdruck auf alle Sätze (bzw. auf die Sätze, die die WHERE-Klausel erfüllen) der Tabelle angewendet, auf die sich die Spaltenangaben im Argumentausdruck beziehen. Enthält der Argumentausdruck keine Spaltenangabe, wird der Argumentausdruck auf alle Sätze der Tabelle des SELECT-Ausdrucks angewendet. Ergebnis ist eine einspaltige Tabelle.

Wenn diese Tabelle NULL-Werte enthält, werden diese vor Anwendung der Mengenfunktion entfernt. Dabei wird eine Warnung erzeugt.
Ist in der Mengenfunktion DISTINCT angegeben, werden nur verschiedene Werte berücksichtigt, d.h., wenn Werte mehrmals in der Tabelle vorkommen, werden die Duplikate vor Anwendung der Mengenfunktion entfernt.
Die Mengenfunktion wird dann auf die verbleibenden Werte der einspaltigen Tabelle angewendet und liefert als Ergebnis genau einen Wert.

Enthält der zugehörige SELECT-Ausdruck (bzw. die SELECT-Anweisung) eine GROUP BY-Klausel, wird die Mengenfunktion wie beschrieben für jede Gruppe gesondert berechnet und liefert pro Gruppe genau einen Wert.


Beispiele

Ohne GROUP BY: Der folgende Ausdruck berechnet die Summe des dreifachen Preises der Artikel aus der Tabelle ARTIKEL:

SELECT SUM (3*preis) FROM artikel

Zur Berechnung des Ausdrucks wird zunächst der Argumentausdruck 3*preis auf alle Sätze der Tabelle ARTIKEL angewendet. Das ergibt folgende Ergebnisspalte:

2101.50
 690,00
 450.00
 450.00
 120.00
 120.00
 180.00
  15.00
  15.00
  30.00
   3.00
   3.30
   2.25

Als Summe ergibt sich der Wert 41880.05.


Mit GROUP BY: Der folgende Ausdruck berechnet aus der Tabelle LAGER den Gesamtbestand pro Lagerort:

SELECT ort, SUM (bestand) FROM lager GROUP BY ort

Zur Berechnung des Ausdrucks werden zunächst die Bestände nach Lagerorten gruppiert:

ort               bestand
Hauptlager             2
                       1
                      10
                      10
                       3
                       3
                       1
                      15
                       8
                       6
                      11
                     120
                     248
Teilelager             9
                       6
                       3
                     200
                     180
                      47

Anschließend werden für jeden Lagerort die Bestände summiert.

ort
Hauptlager           438
Teilelager           445