Die DISTINCT-Funktion (distinct_function) ist eine Set-Funktion, die doppelt vorkommende Werte und alle NULL-Werte entfernt.
<distinct_function>::= <set_function_name> ( DISTINCT <expression> )
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.
|
Ergebnis der DISTINCT-Funktion |
Menge von Werten ist leer und die 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 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 |
Beispieltabelle customer
An wievielen Orten wohnen die Kunden?
SELECT COUNT(DISTINCT city) number_cities FROM customer
number_cities |
4 |