Aufgaben-Python/courses/sql/09_aggregate_und_group_by
Alex Mueller 2571cb8847 feat(ux): responsive kurs-sidebar und kapitel-drawer für alle 13 kurse & web-ide
- 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
2026-09-12 13:49:46 +02:00
..
aufgabe.sql Vollständige Umsetzung von Phase A bis C: (1) SQL & Data Analytics Master (16 Module), (2) HTML5 & Modern CSS3 (16 Module) und (3) Go Cloud Microservices (16 Module). Plattform umfasst nun 131 Module über 7 Sprachen 2026-08-30 13:10:38 +02:00
index.html feat(ux): responsive kurs-sidebar und kapitel-drawer für alle 13 kurse & web-ide 2026-09-12 13:49:46 +02:00
musterloesung.sql Vollständige Umsetzung von Phase A bis C: (1) SQL & Data Analytics Master (16 Module), (2) HTML5 & Modern CSS3 (16 Module) und (3) Go Cloud Microservices (16 Module). Plattform umfasst nun 131 Module über 7 Sprachen 2026-08-30 13:10:38 +02:00
README.md Vollständige Umsetzung von Phase A bis C: (1) SQL & Data Analytics Master (16 Module), (2) HTML5 & Modern CSS3 (16 Module) und (3) Go Cloud Microservices (16 Module). Plattform umfasst nun 131 Module über 7 Sprachen 2026-08-30 13:10:38 +02:00
test_aufgabe.sql Vollständige Umsetzung von Phase A bis C: (1) SQL & Data Analytics Master (16 Module), (2) HTML5 & Modern CSS3 (16 Module) und (3) Go Cloud Microservices (16 Module). Plattform umfasst nun 131 Module über 7 Sprachen 2026-08-30 13:10:38 +02:00

SQL 09: Aggregationen (COUNT/SUM) & GROUP BY 📊

Willkommen zu Modul 09 (Lehrpfad 3: Aggregationen, CTEs & Window Functions)! In diesem Modul meisterst du das Fundament moderner Data Analytics & Business Intelligence: Das Zusammenfassen von Einzeltransaktionen zu wertvollen Geschäftskennzahlen.


🎯 Lernziele

  1. Aggregatfunktionen: Zeilenübergreifende Berechnungen mit COUNT(*), COUNT(DISTINCT ...), SUM(), AVG(), MIN() und MAX().
  2. GROUP BY: Gruppieren von Rohdaten nach Kategorien, Kunden, Zeiträumen und Regionen.
  3. HAVING vs. WHERE: Verstehen des kritischen Unterschieds zwischen Zeilenfiltern (vor der Aggregation) und Gruppenfiltern (nach der Aggregation).
  4. Multi-Column Grouping: Mehrdimensionale Analysen über mehrere Dimensionen (z.B. Stadt + Produktkategorie).
  5. Zeit-Aggregation: Aggregieren von Transaktionsdaten nach Monaten mit strftime('%Y-%m', datum).

💡 Kernkonzepte & Syntax

1. Zeilen filtern vs. Gruppen filtern (WHERE vs. HAVING)

Ein häufiger Denkfehler in SQL ist die Verwendung von Aggregaten in der WHERE-Klausel. Dies führt zu einem Syntaxfehler!

  • WHERE: Filtert Zeilen bevor gruppiert wird. (z.B. WHERE status = 'abgeschlossen')
  • GROUP BY: Fasst gleiche Werte in Gruppen zusammen. (z.B. GROUP BY kunde_id)
  • HAVING: Filtert die aggregierten Gruppen nach der Berechnung. (z.B. HAVING SUM(gesamtbetrag) > 1000)
SELECT 
    k.stadt,
    COUNT(b.id) AS anzahl_bestellungen,
    SUM(b.gesamtbetrag) AS umsatz_stadt
FROM kunden k
JOIN bestellungen b ON k.id = b.kunde_id
WHERE b.status = 'abgeschlossen'
GROUP BY k.stadt
HAVING SUM(b.gesamtbetrag) >= 500
ORDER BY umsatz_stadt DESC;

🚀 Aufgabenstellung (aufgabe.sql)

  1. TODO 1: Kategorie-Umsatz-Statistik – Berechne pro Kategorie die Anzahl verkaufter Artikel, den Gesamtumsatz, den Durchschnittspreis sowie Min/Max-Preise.
  2. TODO 2: Top-Kunden mit HAVING – Identifiziere Kunden mit mindestens 2 abgeschlossenen Bestellungen und einem Gesamtwert von mindestens 500 €.
  3. TODO 3: Monatlicher Umsatz-Report – Gruppiere nach Monat (strftime('%Y-%m', bestell_datum)), berechne Bestellanzahl, Monatsumsatz und AOV (Average Order Value).
  4. TODO 4: Multi-Dimensionale Performance (Stadt & Kategorie) – Gruppiere nach Stadt und Kategorie, zähle eindeutige Bestellungen und summiere den Umsatz mit HAVING SUM(gesamtbetrag) > 300.

🧪 Tests ausführen

Führe in der Web-IDE oder lokal deine Abfragen aus und validiere sie mit test_aufgabe.sql.