ADABAS besitzt einige Funktionen, die spaltenweise über mehrere Zeilen arbeiten. Als abkürzende Bezeichnung für derartige Funktionen soll der Begriff Set-Funktionen verwendet werden.
Die Funktionen finden diese Werte
COUNT(DISTINCT...) die Anzahl der verschiedenen Werte
COUNT (*) die Anzahl aller Werte
NULL-Werte werden, mit Ausnahme bei COUNT (*), nicht in die Berechnung einbezogen.
Die Anfrage
SELECT SUM(konto) sum_konto, MIN(konto) min_konto, FIXED (AVG(konto),7,2) avg_konto, MAX(konto) max_konto, COUNT(*) anzahl FROM kunde WHERE ort = 'Berlin'
ergibt die Tabelle:
'SUM(konto)' bestimmt beispielsweise die Summe der Werte in der Konto-Spalte für alle ausgewählten Zeilen.
SELECT COUNT(*) anzahl FROM kunde
An wievielen Orten wohnen diese Kunden?
SELECT COUNT(DISTINCT ort) anzahl_orte FROM kunde
Wieviele Kunden, die Firmen sind, werden berücksichtigt? Was ist der Durchschnittswert ihres Kontostandes?
SELECT COUNT(*) anzahl, FIXED (AVG(konto),7,2) avg_konto FROM kunde WHERE vorname IS NULL
Set-Funktionen arbeiten über Gruppen von Zahlen, aber sie geben nur einen Wert zurück. Das Ergebnis besteht also aus einer Zeile. Wenn eine Set-Funktion in einer Anfrage verwendet wird, muß 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.
Man schreibt
Funktionsname (ausdruck)
Die Klammern sind notwendig. 'ausdruck' ist meist nur ein Spaltenname, kann aber u.a. auch
- ein arithmetischer Ausdruck,
- ein beliebig mit anderen Funktionen gebildeter Ausdruck,
- eine Konstante,
- DISTINCT mit Spaltenname
sein.