Zurück

Gruppieren von Datensätzen

Vor
Die GROUP BY- KlauselAggregatfunktionenAggregatfunktion ohne GROUP BY- KlauselRechenoperationen in SQLÜbungen

Die GROUP BY- Klausel

SQL erlaubt das Gruppieren von Datensätzen unter Berücksichtigung bestimmter Eigenschaften. Dafür steht die GROUP BY - Klausel zur Verfügung. Pro Gruppe kann mit Hilfe der Aggregatfunktionen ein Informationswert berechnet werden.

Aggregatfunktionen

Folgende Aggregatfunktionen können verwendet werden:

Aggregatfunktion
Bedeutung
COUNT (Ausdruck)
Anzahl der Datensätze je Gruppe
SUM (Ausdruck)
Summe der Werte von (Ausdruck) je Gruppe
AVG (Ausdruck)
Durchschnitt der Werte von (Ausdruck) je Gruppe
MIN (Ausdruck)
Minimum aller Werte von (Ausdruck) je Gruppe
MAX (Ausdruck)
Maximum aller Werte von (Ausdruck) je Gruppe

Diese Gruppierungsausdrücke werden in der SELECT - Klausel verwendet. Mehrfach auftretende Werte werden innerhalb der Aggregatfunktionen mehrfach gezählt. Duplikatzählung verhindert man durch Verwendung des Schlüsselwort DISTINCT innerhalb der Aggregatfunktion.

BemerkungIst das Ergebnis einer Aggregatfunktion, angewendet auf eine Spalte mit der Domäne INTEGER, eine Dezimalzahl, so hängt es von der verwendeten Datenbank ab, ob als das Ergebnis als INTEGER- Zahl, also unter Vernachlässigung der Nachkommastellen, oder als Dezimalzanl angezeigt wird.

Aus welchen Wohnorten stammt das Lehrerkollegium? Wie viele Personen kommen jeweils aus einem bestimmten Ort?

SQL - AnfrageErgebnis - Tabelle
SELECT Wohnort, count(*) AS Anzahl
FROM Lehrkraft
GROUP BY Wohnort ;

Übungsdatenbank

Bei Ausführung des obigen Befehls gruppiert das System in einem ersten Schritt die Datentupel aller Lehrkräfte nach dem Wohnort, in einem zweiten Schritt werden die Datensätze pro Wohnort gezählt und dann ausgegeben.
Die Angabe eines Sterns innerhalb der COUNT- Klausel weist das System an, jeweils alle Datensätze innerhalb einer Gruppe zu zählen.

Bemerkung ACHTUNG: Außer Aggregaten dürfen in der SELECT - Klausel nur Attribute vorkommen, die in der GROUP BY - Klausel aufgeführt sind.

Aggregatfunktion ohne GROUP BY- Klausel

Wird die GROUP BY - Klausel weggelassen und trotzdem eine Aggregatfunktion in der SELECT - Klausel verwendet, so werden alle Datensätze der Tabelle zu einer einzigen Gruppe zusammengefasst.

Was ist das durchschnittliche Geburtsjahr im Lehrerkollegium?

SQL - AnfrageErgebnis - Tabelle
SELECT AVG (Geburtsjahr) AS Durchschnitt
FROM Lehrkraft ;

Übungsdatenbank

Rechenoperationen in SQL

In der SELECT- und der WHERE- Klausel können auch Rechenoperationen durchgeführt werden. Grundsätzlich möglich ist die Verwendung von +, -, / und * sowie die Verwendung von Klammern. Daneben ist auch die Verwendung von Funktionen, wie beispielsweise die Wurzelfunktion, möglich, sofern sie von der Datenbank zur Verfügung gestellt werden. Als Operanden können Zahlen und Ergebnisse von Aggregatfunktionen verwendet werden.

Wie viele Stunden Unterricht werden durchschnittlich pro Fach und pro Klasse erteilt?

SQL - AnfrageErgebnis - Tabelle
SELECT SUM (Stundenzahl) / COUNT (*) AS Durchschnittsstundenzahl
FROM ist_Fachlehrkraft_von ;

Übungsdatenbank

Hinweis: Das Ergebnis erhält man einfacher durch Ausnutzung der AVG- Funktion.

Bemerkungzum obigen Beispiel
Die Onlinedatenbank schneidet bei der Ergebnisausgabe die Nachkommastellen ab, d.h. das Ergebnis der Anfrage ist 3!

Wie viele Lehrerinnen bzw. der Lehrer aus Passau gibt es?

Wie viele Schülerinnen und Schüler pro Konfession gibt es in der elften Klasse?

Wie groß sind die Klassenstärken?

Zu wie vielen Fächern gibt es eine Fachbetreuung?

Gesucht ist die höchste laufende Nummer innerhalb eines Eintrittsjahres! Zusätzlich ausgegeben werden soll dazu das jeweilige Eintrittsjahr.

Wie viele Mathematikstunden sind von Lehrkräften zu halten, wenn der Stundenansatz pro Klasse um 2 erhöht wird?

zu Abschnitt 11.

Aufgabe 14
Wie viele Kunden kommen aus den verschiedenen Ländern? (Ausgabe von Land und der Anzahl als "Kundenzahl")
Aufgabe 15
Wie hoch ist der Durchschnittspreis aller Artikel?
Aufgabe 16
Wie hoch ist der Durchschnittspreis aller Artikel, deren Artikelname mit 'M' beginnt?
Aufgabe 17
Die Artikel sind in Kategorien unterteilt. Gib von jeder Kategorie den teuersten Artikel mit Namen, Kategorienummer und Einzelpreis aus.
Aufgabe 18
Wie groß ist der Unterschied zwischen Lagerbestand und Mindestbestand im Durchschnitt? Gib der Ausgabe einen sinnvollen Spaltentitel.