← Zurück zum Dashboard Lernfeld 8 · Modul 04

Modul 04: SQL DML: Datenabfragen, Aggregationen & JOINs

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:

  1. FROM / JOIN: Datenquellen bestimmen und verknüpfen.
  2. WHERE: Zeilen vor der Gruppierung filtern.
  3. GROUP BY: Zeilen zu Gruppen zusammenfassen.
  4. HAVING: Ganze Gruppen filtern (Bedingungen auf Aggregatfunktionen!).
  5. SELECT: Spalten und Berechnungen ausgeben.
  6. ORDER BY: Sortieren nach Spalten (ASC / DESC).
  7. 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.)
← Vorheriges Modul 🏠 Kursübersicht Nächstes Modul →