- 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 12: Window Functions (ROW_NUMBER, OVER, PARTITION BY, LAG) 🪟📊
Willkommen zu Modul 12 (Lehrpfad 3: Aggregationen, CTEs & Window Functions)! Window Functions sind der Goldstandard moderner SQL-Analytik in BigQuery, Snowflake, PostgreSQL und SQLite. Sie erlauben tiefgehende Berechnungen über benachbarte Zeilen, ohne den Detailgrad der Datensätze zu vernichten.
🎯 Lernziele
- Die
OVER()-Klausel: Definieren von Analyse-Fenstern mitPARTITION BYundORDER BY. - Ranking-Funktionen: Verstehen der Unterschiede zwischen
ROW_NUMBER(),RANK()undDENSE_RANK(). - Offset-Navigation (
LAG&LEAD): Berechnen von Periodenvergleichen, Wachstumsraten und Deltas ohne Self-Joins. - Kumulierte Summen (Running Totals): Fortlaufende Kontostände und Allzeit-Umsätze berechnen.
- Gleitende Durchschnitte (Moving Averages): Glätten von Zeitreihen über
ROWS BETWEEN n PRECEDING AND CURRENT ROW.
💡 Syntax im Detail
-- Fortlaufende Summe je Kunde
SELECT
kunde_id,
bestell_datum,
betrag,
SUM(betrag) OVER (
PARTITION BY kunde_id
ORDER BY bestell_datum
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
) AS kumulierter_umsatz
FROM bestellungen;
🚀 Aufgabenstellung (aufgabe.sql)
- TODO 1: Ranking-Vergleich – Berechne für Produkte innerhalb jeder Kategorie
ROW_NUMBER(),RANK()undDENSE_RANK(). - TODO 2: Time-Series Analyse mit LAG – Berechne Vortagesumsatz, absolutes Delta und prozentuales Wachstum.
- TODO 3: Running Total – Ermittle den kumulierten Allzeitumsatz je Kunde.
- TODO 4: Moving Average – Berechne den 3-Tage gleitenden Durchschnitt über die täglichen Gesamtumsätze.
🧪 Tests ausführen
Validierung erfolgt über test_aufgabe.sql.