| Syntax : | SELECT | COUNT ([DISTINCT] <Spaltenliste|*>) |
| FROM | <Tabelle> | |
| Beispiel : | Gesucht wird die Anzahl der Mitarbeiter des Unternehmens. | |
| SELECT | COUNT (*) | |
| FROM | Mitarbeiter | |
| Beispiel : | Wieviele verschiedene Mitarbeiter-Nachnamen existieren im Unternehmen? | |
| SELECT | COUNT (DISTINCT vor_name, nach_name) | |
| FROM | Mitarbeiter | |
| Syntax : | SELECT | SUM ({numerische Spalte | |
| Arithmetischer Ausdruck mit numerischen Spalten}) | ||
| FROM | <Tabelle> | |
| Beispiel : | Gesucht wird das Gehalt, das das Unternehmen an seine Mitarbeiter insgesamt zahlt. | |
| SELECT | SUM (gehalt) | |
| FROM | Mitarbeiter | |
| Syntax : | SELECT | AVG ({numerische Spalte | |
| Arithmetischer Ausdruck mit numerischen Spalten } | ||
| FROM | <Tabelle> | |
| Beispiel : | Gesucht wird das Durchschnittsgehalt der Mitarbeiter. | |
| SELECT | AVG (gehalt) | |
| FROM | Mitarbeiter | |
| Syntax : | SELECT | MAX ({numerische Spalte | |
| Arithmetischer Ausdruck mit numerischen Spalten}) | ||
| FROM | <Tabelle> | |
| Beispiel : | Gesucht wird das größte Gehalt, das das Unternehmen zahlt. | |
| SELECT | MAX (gehalt) | |
| FROM | Mitarbeiter | |
| Syntax : | SELECT | MIN ({numerische Spalte | |
| Arithmetischer Ausdruck mit numerischen Spalten}) | ||
| FROM | <Tabelle> | |
| Beispiel : | Gesucht wird das kleinste Gehalt, das das Unternehmen zahlt. | |
| SELECT | MIN (gehalt) | |
| FROM | Mitarbeiter | |
| Syntax : | SELECT | <Spalte> , <Aggregatfunktion ... > |
| FROM | <Tabelle> | |
| GROUP BY | <Spalte> | |
| Hinweis : | Die in der group by-Komponente spezifizierten Spalten müssen auch in der SELECT-Komponente spezifiziert sein, da Basis für die Gruppierung die "Zwischen-Ergebnis"-Tabelle ist, die durch Select ... From ... Where ... spezifiziert wurde. Andererseits müssen alle Spalten der Selektionsliste, die nicht durch eine Aggregatfunktion gebunden sind, in der group by-Komponente aufgeführt werden. Daraus ergibt sich eine gewisse Redundanz im Abfragecode. Die Reihenfolge der Spaltenspezifikation in der GROUP BY-Komponente hat keinen Einfluß auf das Resultat der Abfrage. | |
| Beispiel : | Es sind zwei Gruppen zu bilden: die Gruppe der weiblichen Mitarbeiter und die Gruppe der männlichen Mitarbeiter. Für jede Gruppe soll das Durchschnittsgehalt ermittelt werden. D.h. es soll für jedes Geschlecht das Durchschnittsgehalt berechnet werden. | |
| SELECT | geschlecht, AVG (gehalt) | |
| FROM | Mitarbeiter | |
| GROUP BY | geschlecht | |
| Beispiel : | Für jede Abteilung, die in der Tabelle "Mitarbeiter" referenziert wird, soll eine Gruppe gebildet werden. Für jede Abteilung wird die Anzahl der Mitarbeiter bestimmt. | |
| SELECT | abt_nr, COUNT (pers_nr) | |
| FROM | Mitarbeiter | |
| GROUP BY | abt_nr | |
| Syntax : | SELECT | <Spalte> , <Aggregatfunktion ...> |
| FROM | <Tabelle> | |
| GROUP BY | <Spalte> | |
| HAVING | <Bedingung> | |
| Beispiel : | Es sind für jeden Mitarbeiter, der an einem Projekt arbeitet, die Stunden zu ermitteln, die er insgesamt in den Projekten beschäftigt ist und zu überprüfen, ob diese Anzahl Stunden 10 überschreitet. Die Ergebnistabelle soll dann die Personalnummer und die Projektstundensumme derjenigen Mitarbeiter enthalten, die mehr als 10 Stunden Projektarbeitszeit aufweisen. | |
| SELECT | pers_nr, SUM (stunden) | |
| FROM | Arbeitet_an | |
| GROUP BY | pers_nr | |
| HAVING | SUM (stunden) > 10 | |
| CREATE VIEW | Temp (abt_nr, mitarb_anzahl) AS | |
| SELECT | anr, COUNT (pers_nr) | |
| FROM | Mitarbeiter | |
| GROUP BY | anr |
| SELECT | AVG (mitarb_anzahl) | |
| FROM | Temp |
| Beispiel : | Ermittle die drei bestverdienenden Mitarbeiter (Annahme: Gehalt = UNIQUE) | |
| SELECT | A.pers_nr , COUNT (B.pers_nr) AS Rang | |
| FROM | Mitarbeiter A, Mitarbeiter B | |
| WHERE | A.gehalt < B.gehalt | |
| GROUP BY | A.pers_nr | |
| HAVING | Rang < 3 | |
| ORDER BY | 2 | |
| Hinweis : | Im Beispiel wurde angenommen, daß jedes Gehalt einmalig ist. Ist dies nicht der Fall, dann ist das Ergebnis der Abfrage allgemeiner: Es werden dann alle Mitarbeiter selektiert, für die es maximal zwei Mitarbeiter gibt, die mehr verdienen. Die "Order By"-Klausel ist bei dieser Abfrage optional. | |