## Set-Funktion (set_function_spec)

Es gibt eine Reihe von Funktionen, die auf eine Menge von Werten (Zeilen) als Argument angewandt werden und ein Ergebnis liefern. Als Bezeichnung für derartige Funktionen wird der Begriff Set-Funktion (set_function_spec) verwendet.

### Syntax

<set_function_spec> ::= COUNT(*)
| <all_function>
| <distinct_function>

<all_function> ::= <set_function_name>([ALL] <expression>)
<distinct_function> ::= <set_function_name>(DISTINCT <expression>)

<set_function_name> ::= AVG | COUNT | MAX | MIN | STDDEV | SUM | VARIANCE

### Beispiele

SQL-Tutorial, Set-Funktionen, Bilden von Gruppen: GROUP BY, HAVING, Informationen über Zeichenketten

### Erläuterung

Set-Funktionen arbeiten über Gruppen von Werten, aber sie geben nur einen Wert zurück. Das Ergebnis besteht aus einer Zeile. Wenn eine Set-Funktion in einer Anweisung verwendet wird, muss auch auf jede andere Spalte der Anfrage eine solche Funktion angewandt werden. Dies gilt jedoch nicht für eine Spalte, über die mittels GROUP BY eine Gruppierung vorgenommen wurde. Es wird dann für jede Gruppe der Wert der Set-Funktion bestimmt.

Das Argument einer DISTINCT-Funktion oder einer ALL-Funktion ist eine Ergebnistabelle oder eine Gruppe (die Ergebnistabelle kann durch eine GROUP-Bedingung gruppiert werden).

NULL-Werte werden, mit Ausnahme der Funktion COUNT(*), nicht in die Berechnung einbezogen.

Bei einigen Set-Funktionen wird unabhängig von dem bei der Anmeldung festgelegten Isolation-Level kein Sperrverfahren durchgeführt.

#### <set_function_name>

Die Set-Funktionen werden durch folgende Set-Funktionsnamen klassifiziert:

AVG | Das Ergebnis von AVG ist das arithmetische Mittel der Werte des Arguments. AVG kann nur auf numerische Werte angewandt werden. Das Ergebnis ist vom Datentyp FLOAT(38).
COUNT | - COUNT(*) liefert die Anzahl aller Werte (Zeilen der Ergebnistabelle oder einer Gruppe). - COUNT(DISTINCT <expression>) liefert die Anzahl der voneinander verschiedenen Werte (Anzahl der Werte des Arguments der DISTINCT-Funktion). - COUNT(ALL <expression>) liefert die Anzahl der Werte, die vom NULL-Wert verschieden sind (Anzahl der Werte des Arguments der ALL-Funktion). Das Ergebnis ist vom Datentyp FIXED(10).
MAX | Das Ergebnis von MAX ist der größte Wert des Arguments.
MIN | Das Ergebnis von MIN ist der kleinste Wert des Arguments.
STDDEV | Das Ergebnis von STDDEV ist die Standardabweichung der Werte des Arguments. STDDEV kann nur auf numerische Werte angewandt werden. Das Ergebnis ist vom Datentyp FLOAT(38).
SUM | Das Ergebnis von SUM ist die Summe der Werte des Arguments. SUM kann nur auf numerische Werte angewandt werden. Das Ergebnis ist vom Datentyp FLOAT(38).
VARIANCE | Das Ergebnis von VARIANCE ist die Varianz der Werte des Arguments. VARIANCE kann nur auf numerische Werte angewandt werden. Das Ergebnis ist vom Datentyp FLOAT(38).

#### ALL/DISTINCT-Funktion

| Ergebnis der ALL/DISTINCT-Funktion
Die Menge von Werten ist leer und die ALL-/DISTINCT-Funktion wird auf die gesamte Ergebnistabelle angewandt | Die Set-Funktionen AVG, MAX, MIN, STDDEV, SUM, VARIANCE liefern als Ergebnis den NULL-Wert. Die Set-Funktion COUNT liefert den Wert 0.
Es gibt keine Gruppe, auf die die ALL-/DISTINCT-Funktion angewandt werden kann. | Im Ergebnis erhält man eine leere Tabelle.
Die Menge von Werten enthält mindestens einen Spezial-NULL-Wert | Spezial-NULL-Wert

##### <all_function>

Die ALL-Funktion all_function ist eine Set-Funktion, die alle NULL-Werte entfernt.

Das Argument einer ALL-Funktion ist eine Menge von Werten, die wie folgt gebildet wird:

1. Eine Ergebnistabelle oder eine Gruppe (die Ergebnistabelle kann durch eine GROUP-Bedingung gruppiert werden) wird gebildet.

2. Auf jede Zeile dieser Ergebnistabelle oder Gruppe wird der Ausdruck expression angewandt.
Der Ausdruck darf keine Set-Funktion enthalten.

3. Alle NULL-Werte werden entfernt. Spezial-NULL-Werte werden nicht entfernt, zwei Spezial-NULL-Werte gelten als gleich.

Die ALL-Funktion wird unter Berücksichtigung des entsprechenden Set-Funktionsnamens set_function_name für die Menge von Werten durchgeführt.

Das Ergebnis einer ALL-Funktion ist unabhängig davon, ob das Schlüsselwort ALL angegeben wird oder nicht.

##### <distinct_function>

Die DISTINCT-Funktion distinct_function ist eine Set-Funktion, die doppelt vorkommende Werte und alle NULL-Werte entfernt.

Das Argument einer DISTINCT-Funktion ist eine Menge von Werten, die wie folgt gebildet wird:

...

1. Eine Ergebnistabelle oder eine Gruppe (die Ergebnistabelle kann durch eine GROUP-Bedingung gruppiert werden) wird gebildet.

2. Auf jede Zeile dieser Ergebnistabelle oder Gruppe wird der Ausdruck expression angewandt.
Der Ausdruck darf keine Set-Funktion erhalten.

3. Alle NULL-Werte und doppelt vorkommenden Werte werden entfernt (DISTINCT). Spezial-NULL-Werte werden nicht entfernt, zwei Spezial-NULL-Werte gelten als gleich.

Die DISTINCT-Funktion wird unter Berücksichtigung des entsprechenden Set-Funktionsnamens set_function_name für diese Menge von Werten durchgeführt.