Abfragen: Aggregation » Aufgaben
Datenbank: fahrschule
„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
„Die Anzahl aller Fahrschüler/innen, die ihre Theorieprüfung bereits bestanden haben“
Frage ebenfalls ab:
„Die Anzahl aller Fahrschüler/innen, die ihre Theorieprüfung noch nicht bestanden haben“
Vergewissere dich, dass die Gesamtzahl der Fahrschüler/innen genau der Summe der beiden Ergebnisse entspricht.
Verwende COUNT(*)
in Kombination mit einer Selektion (WHERE
), nämlich nur diejenigen, die ihre Theorieprüfung bestanden haben.
Erwartetes Ergebnis:
SELECT COUNT(*) AS anzahl_bestanden
FROM fahrschueler
WHERE theorie_bestanden = 1
SELECT COUNT(*) AS anzahl_nichtbestanden
FROM fahrschueler
WHERE theorie_bestanden = 0
Datenbank: onlineshop
„Die Anzahl aller Kunden“
Verwende COUNT(*)
.
Erwartetes Ergebnis:
SELECT COUNT(*) AS anzahl
FROM kunde
„Die Anzahl aller Bücher“
Verwende COUNT(*)
.
Erwartetes Ergebnis:
SELECT COUNT(*) AS anzahl
FROM kunde
„Die Anzahl aller Bücher, die mehr als 10 € kosten“
Verwende COUNT(*)
und eine WHERE
-Klausel.
Erwartetes Ergebnis:
SELECT COUNT(*) AS anzahl
FROM buch
WHERE preis > 10
Datenbank: fahrschule (mit Gruppierung)
„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
Datenbank: onlineshop
„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:
SELECT k.kundennr, k.vorname, k.nachname,
SUM(wk.anzahl) AS anzahl_buecher, -- Hier werden alle Anzahlen der einzelnen Bestellungen summiert
SUM(wk.anzahl * b.preis) AS gesamtpreis -- Hier wird summiert ueber eine dynamisch berechnete Spalte
FROM kunde AS k,
warenkorb AS wk,
buch AS b
WHERE k.kundennr = wk.kundennr -- Join-Bedingung 1
AND wk.isbn = b.isbn -- Join-Bedingung 2
GROUP BY k.kundennr, k.vorname, k.nachname
ORDER BY k.kundennr