- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel) - Kurswechsler Dropdown mit Direktnavigation - Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage - Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets - Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor - Saubere Bereinigung redundanter statischer Legacy-Sidebars |
||
|---|---|---|
| .. | ||
| aufgabe.sql | ||
| index.html | ||
| musterloesung.sql | ||
| README.md | ||
| test_aufgabe.sql | ||
SQL 10: Subqueries & Mengenoperationen 🔍🔀
Willkommen zu Modul 10 (Lehrpfad 3: Aggregationen, CTEs & Window Functions)! In diesem Modul lernst du, wie du komplexe Geschäftslogik mit verschachtelten Unterabfragen (Subqueries) und mengentheoretischen Operatoren elegant und performant löst.
🎯 Lernziele
- Skalare Subqueries: Nutzen von Unterabfragen in
SELECTundWHERE, die genau einen Einzelwert (z.B. Durchschnitt) zurückliefern. - Korrelierte Subqueries & EXISTS: Zeilenweise Verknüpfung äußerer Tabellen mit Subqueries (
EXISTS/NOT EXISTS) für performante Filterung. - Mengenoperationen: Vereinigen von Datensätzen mit
UNION(Deduplizierung) undUNION ALL(maximale Performance). - Schnitt- & Differenzmengen: Finden von gemeinsamen Kunden (
INTERSECT) und Ausschlussmengen (EXCEPT).
💡 Kernkonzepte
1. IN vs. EXISTS
IN: Evaluiert die gesamte Subquery zu einer Wertemenge. Bei großen Datenmengen oderNULL-Werten kannNOT INunerwartete Ergebnisse liefern.EXISTS: Prüft nur auf die Existenz mindestens einer Zeile und bricht die Suche sofort nach dem ersten Treffer ab (Short-Circuiting). Das ist in den meisten Fällen deutlich performanter.
-- Finde Kunden mit mindestens einer Bestellung
SELECT k.id, k.name
FROM kunden k
WHERE EXISTS (
SELECT 1 FROM bestellungen b
WHERE b.kunde_id = k.id
);
2. Die vier Mengenoperatoren im Überblick
| Operator | Duplikate | Wirkung |
|---|---|---|
UNION |
Werden entfernt | Vereinigung aller disjunkten Zeilen beider Abfragen |
UNION ALL |
Bleiben erhalten | Schnelles Aneinanderhängen beider Ergebnismengen |
INTERSECT |
Werden entfernt | Nur Zeilen, die in beiden Mengen vorkommen |
EXCEPT |
Werden entfernt | Zeilen aus Menge A, die NICHT in Menge B vorkommen |
🚀 Aufgabenstellung (aufgabe.sql)
- TODO 1: Skalare Subquery & Preisabweichung – Finde Produkte über dem Durchschnittspreis und berechne die Differenz zum Mittelwert.
- TODO 2: Korrelierte Subquery mit NOT EXISTS – Identifiziere loyale Kunden (Kauf online vorhanden, aber noch nie eine Retoure eingereicht).
- TODO 3: Multi-Channel Konsolidierung – Vereinige Online- und Filialumsätze mit
UNION ALL. - TODO 4: Omnichannel vs. Pure-Online Analyse – Berechne mit
INTERSECTKunden, die beide Kanäle nutzen, und mitEXCEPTreine Online-Käufer.
🧪 Tests ausführen
Validierung erfolgt über test_aufgabe.sql in der Web-IDE oder lokal per SQLite.