Abfragen: Aggregation » Aufgaben
Alle Aufgaben beziehen sich auf die Datenbanken fahrschule und onlineshop und können mit dem SQL-Browser gelöst werden.
„Die Anzahl aller Schüler/innen“
Verwende COUNT
.
Erwartetes Ergebnis:
SELECT COUNT(*) AS anzahl
FROM fahrschueler
„Die mittlere Anzahl der Fahrstunden (arithmetisches Mittel), welche die Schüler/innen absolviert haben“
Verwende AVG
.
Erwartetes Ergebnis:
SELECT AVG(anz_fahrstunden) AS mittlere_anzahl
FROM fahrschueler
„Häufigkeitsverteilung der Anzahl der Fahrstunden, die ein Schüler absolviert hat, sortiert nach der Anzahl der Fahrstunden“
Z.B.: 16 Schüler haben 20 Fahrstunden absolviert, 12 Schüler haben 21 Fahrstunden absolviert, usw.
Tipp: Verwende GROUP BY
, um die Schüler nach Fahrstundenanzahlen zu gruppieren. Verwende dann COUNT(*)
, um innerhalb jeder Gruppe zu zählen.
Erwartetes Ergebnis:
SELECT anz_fahrstunden, COUNT(*) AS haeufigkeit
FROM fahrschueler
GROUP BY anz_fahrstunden
ORDER BY anz_fahrstunden
„Vornamen und Nachnamen der Fahrlehrer, sowie die Anzahl der Schüler, die jede/r Fahrlehrer/in unterrichtet hat, sortiert nach der Schülerzahl“
Gehe in drei Schritten vor.
- Verwende einen Join, um alle Fahrschüler mit ihren zugehörigen Fahrlehrern zu verbinden.
- Verwende
GROUP BY
, um nach Fahrlehrern zu gruppieren. - Zähle innerhalb jeder Gruppe (also pro Fahrlehrer) die Schüler mit
COUNT
Sortiere abschließend nach der Schülerzahl.
Erwartetes Ergebnis:
SELECT fl.vorname, fl.nachname, COUNT(*) AS anzahl_schueler
FROM fahrschueler AS fs,
fahrlehrer AS fl
WHERE fs.fl_kuerzel = fl.kuerzel -- JOIN-Bedingung
GROUP BY fl.vorname, fl.nachname
ORDER BY anzahl_schueler
„Vornamen und Nachnamen der Fahrlehrer, sowie die Fahrstunden, die jede/r Fahrlehrer/in gegeben hat, absteigend sortiert nach der Stundenzahl“
Gehe in drei Schritten vor.
- Verwende einen Join, um alle Fahrschüler mit ihren zugehörigen Fahrlehrern zu verbinden.
- Verwende
GROUP BY
, um nach Fahrlehrern zu gruppieren. - Summiere innerhalb jeder Gruppe (also pro Fahrlehrer) die Fahrstunden der Schüler mit
SUM
Sortiere abschließend nach der Stundenzahl.
Erwartetes Ergebnis:
SELECT fl.vorname, fl.nachname, SUM(anz_fahrstunden) AS erteilte_fahrstunden
FROM fahrschueler AS fs,
fahrlehrer AS fl
WHERE fs.fl_kuerzel = fl.kuerzel -- JOIN-Bedingung
GROUP BY fl.vorname, fl.nachname
ORDER BY erteilte_fahrstunden DESC
„Kundenummern, Vornamen und Nachnamen der Kunden, sowie die Anzahl der verschiedenen Bücher, die im jeweiligen Warenkorb liegt, aufsteigend sortiert nach der Bücherzahl“
Gehe in drei Schritten vor.
- Verwende einen Join, um alle Kunden mit ihren Warenkorb-Bestellungen zu verbinden.
- Verwende
GROUP BY
, um nach Kundennr, Kunden-Vorname und Kunden-Nachname zu gruppieren. - Zähle innerhalb jeder Gruppe (also pro Kunde) die Anzahl der Bestellungen via
COUNT
Sortiere abschließend nach der Stundenzahl.
Erwartetes Ergebnis:
SELECT k.kundennr, k.vorname, k.nachname,
COUNT(*) AS anzahl_verschiedene_buecher
FROM kunde AS k, warenkorb AS wk
WHERE k.kundennr = wk.kundennr
GROUP BY k.kundennr, k.vorname, k.nachname
ORDER BY anzahl_buecher
„Kundenummern, Vornamen und Nachnamen der Kunden, sowie die Anzahl aller bestellten Bücher, die im jeweiligen Warenkorb liegt, mit dazugehörigem Gesamtpreis, aufsteigend sortiert nach der Kundennr.“
Gehe in vier Schritten vor.
- Verwende zwei Joins, um alle Kunden mit ihren Warenkorb-Bestellungen und Büchern zu verbinden.
- Verwende
GROUP BY
, um nach Kundennr, Kunden-Vorname und Kunden-Nachname zu gruppieren. - Summiere innerhalb jeder Gruppe (also pro Kunde) die Anzahl der Bücher via
SUM
- Summiere innerhalb jeder Gruppe (also pro Kunde) die Preise der Bücher via
SUM
. Berechne dazu für jede Bestellung zunächst die neue Spalte „Anzahl * Preis“, und summiere über diese neu berechnete Spalte.
Sortiere abschließend nach der Stundenzahl.
Erwartetes Ergebnis: