Data Manipulation Language: SELECT, WHERE, ORDER BY, GROUP BY, HAVING, Aggregatfunktionen (COUNT, SUM, AVG) sowie INNER JOIN und LEFT JOIN über mehrere Tabellen.
📖 Fachtheorie & KMK-Prüfungswissen
1. Die logische Verarbeitungsreihenfolge einer SQL-Abfrage
Obwohl SELECT an erster Stelle notiert wird, führt die SQL-Engine die Klauseln in folgender Reihenfolge aus:
FROM / JOIN: Datenquellen bestimmen und verknüpfen.
WHERE: Zeilen vor der Gruppierung filtern.
GROUP BY: Zeilen zu Gruppen zusammenfassen.
HAVING: Ganze Gruppen filtern (Bedingungen auf Aggregatfunktionen!).
SELECT: Spalten und Berechnungen ausgeben.
ORDER BY: Sortieren nach Spalten (ASC / DESC).
LIMIT: Ausgabe auf $n$ Zeilen beschränken.
2. JOIN-Arten im Überblick
- INNER JOIN: Gibt nur die Zeilen zurück, bei denen in beiden Tabellen eine Übereinstimmung der Join-Bedingung vorliegt.
- LEFT JOIN (LEFT OUTER JOIN): Gibt alle Zeilen der linken Tabelle zurück. Gibt es keine Übereinstimmung in der rechten Tabelle, werden die rechten Spalten mit
NULL aufgefüllt.
✍️ Authentische IHK-Prüfungsaufgaben mit Erwartungshorizont
SQL-Abfrage mit GROUP BY und Mehrfach-JOIN
10 Punkte
Gegeben sind folgende Tabellen:
- Kunde (kunden_id, name, stadt)
- Auftrag (auftrags_id, kunden_id, datum)
- Auftragsposition (auftrags_id, artikel_id, menge, preis)
Formulieren Sie eine SQL-Abfrage, die den Kundennamen sowie den gesamten getätigten Umsatz (Summe aus menge * preis) für jeden Kunden ausgibt, der in der Stadt 'Hamburg' wohnt und dessen Gesamtumsatz mehr als 5.000 € beträgt. Sortieren Sie das Ergebnis absteigend nach dem Umsatz.
💡 Didaktischer Erwartungshorizont & Punkteverteilung (nach KMK-Kriterien)
Musterlösung SQL DML:
SELECT
k.name AS Kundenname,
SUM(ap.menge * ap.preis) AS Gesamtumsatz
FROM Kunde k
INNER JOIN Auftrag a ON k.kunden_id = a.kunden_id
INNER JOIN Auftragsposition ap ON a.auftrags_id = ap.auftrags_id
WHERE k.stadt = 'Hamburg'
GROUP BY k.kunden_id, k.name
HAVING SUM(ap.menge * ap.preis) > 5000.00
ORDER BY Gesamtumsatz DESC; (10 Pkt.)