Aufgaben-Python/courses/sql/09_aggregate_und_group_by
2026-08-30 13:10:38 +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 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
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.