Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m290_guko:learningunits:lu10:theorie:b_group_by [2025/11/09 18:02] – gkoch | modul:m290_guko:learningunits:lu10:theorie:b_group_by [2025/11/09 22:28] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ===== LU10b: Gruppieren mit GROUP BY – Kennzahlen pro Kategorie ===== | + | ====== LU10b: Gruppieren mit GROUP BY – Kennzahlen pro Kategorie |
| {{ : | {{ : | ||
| Zeile 9: | Zeile 9: | ||
| </ | </ | ||
| - | === 1. Regeln bei Abfragen mit Aggregatfunktionen === | + | ===== 1. Regeln bei Abfragen mit Aggregatfunktionen |
| <WRAP round 80% box center> | <WRAP round 80% box center> | ||
| * In '' | * In '' | ||
| Zeile 15: | Zeile 15: | ||
| </ | </ | ||
| - | === 2. Beispiel: Wie viele Missionen pro Firma (Top 10)? === | + | <WRAP alert center round 70%> |
| + | **Typischer Fehler: | ||
| + | <code sql> | ||
| + | SELECT gemeindename, | ||
| + | FROM einbrueche; | ||
| + | </ | ||
| + | Immer **alle nicht aggregierten Spalten** ins '' | ||
| + | </ | ||
| + | |||
| + | ===== 2. Beispiel: Wie viele Missionen pro Firma (Top 10)? ===== | ||
| <WRAP round 80% box center> | <WRAP round 80% box center> | ||
| <code sql> | <code sql> | ||
| Zeile 29: | Zeile 38: | ||
| </ | </ | ||
| - | === 3.3 Beispiel: Total Einbrüche pro Jahr (Kanton ZH) === | + | ===== 3. Beispiel: Total Einbrüche pro Jahr (Kanton ZH) ===== |
| <WRAP round 80% box center> | <WRAP round 80% box center> | ||
| <code sql> | <code sql> | ||
| - | SELECT ausgangsjahr, | + | SELECT ausgangsjahr, |
| - | SUM(straftaten_total) AS total_faelle | + | FROM einbrueche |
| - | FROM zh_einbrueche.einbrueche | + | |
| GROUP BY ausgangsjahr | GROUP BY ausgangsjahr | ||
| - | ORDER BY ausgangsjahr; | + | ORDER BY ausgangsjahr |
| + | LIMIT 5; | ||
| </ | </ | ||
| - | **Was passiert?** '' | + | **Was passiert?** '' |
| + | {{: | ||
| + | //Während den Pandemie-Jahren ging die Zahl der Einbrüche im Kanton Zürich zurück – jetzt steigt sie wieder an.// | ||
| </ | </ | ||
| - | === 3.4 Beispiel: Total pro Jahr **und** Tatbestand === | ||
| - | <WRAP round 80% box center> | ||
| - | <code sql> | ||
| - | SELECT ausgangsjahr, | ||
| - | | ||
| - | | ||
| - | FROM zh_einbrueche.einbrueche | ||
| - | GROUP BY ausgangsjahr, | ||
| - | ORDER BY ausgangsjahr, | ||
| - | </ | ||
| - | **Was passiert?** Mehrspaltiges '' | ||
| - | </ | ||
| - | |||
| - | <WRAP alert center round 70%> | ||
| - | **Typischer Fehler: | ||
| - | <code sql> | ||
| - | SELECT gemeindename, | ||
| - | FROM zh_einbrueche.einbrueche; | ||
| - | </ | ||
| - | Immer **alle nicht aggregierten Spalten** ins '' | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| ===== 4. HAVING – Gruppen nach Kennzahlen filtern ===== | ===== 4. HAVING – Gruppen nach Kennzahlen filtern ===== | ||
| Zeile 73: | Zeile 61: | ||
| </ | </ | ||
| - | === 4.2 Beispiel: Firmen mit **mehr als 100** Missionen (Top 5) === | ||
| - | <WRAP round 80% box center> | ||
| - | <code sql> | ||
| - | SELECT company, | ||
| - | | ||
| - | FROM spacemission.missions | ||
| - | GROUP BY company | ||
| - | HAVING COUNT(*) > 100 | ||
| - | ORDER BY starts DESC | ||
| - | LIMIT 5; | ||
| - | </ | ||
| - | **Was passiert?** Erst **gruppieren**, | ||
| - | </ | ||
| - | === 4.3 Beispiel: Jahre mit über **25'000** Einbruch-Fällen (ZH) === | + | === 4.2 Beispiel: Jahre mit über 25'000 Einbruch-Fällen (ZH) === |
| <WRAP round 80% box center> | <WRAP round 80% box center> | ||
| <code sql> | <code sql> | ||
| - | SELECT ausgangsjahr, | + | SELECT ausgangsjahr, |
| - | SUM(straftaten_total) AS total_faelle | + | FROM einbrueche |
| - | FROM zh_einbrueche.einbrueche | + | |
| GROUP BY ausgangsjahr | GROUP BY ausgangsjahr | ||
| HAVING SUM(straftaten_total) > 25000 | HAVING SUM(straftaten_total) > 25000 | ||
| Zeile 98: | Zeile 72: | ||
| </ | </ | ||
| **Was passiert?** '' | **Was passiert?** '' | ||
| + | {{: | ||
| </ | </ | ||
| - | ---- | ||
| - | |||
| - | ===== 5. Live-Beispiele im Unterricht (wie angekündigt) ===== | ||
| - | |||
| - | <WRAP round 80% box center> | ||
| - | **COUNT** – Missionen gesamt bis 2022 | ||
| - | <code sql> | ||
| - | SELECT COUNT(*) | ||
| - | FROM spacemission.missions | ||
| - | WHERE YEAR(launch_date) <= 2022; | ||
| - | </ | ||
| - | |||
| - | **SUM** – Views aller 100 YouTube-Songs | ||
| - | <code sql> | ||
| - | SELECT SUM(view_count) | ||
| - | FROM youtube_top_100_songs_2025.youtube_top_100_songs_2025; | ||
| - | </ | ||
| - | |||
| - | **AVG** – Durchschnittliche Songdauer | ||
| - | <code sql> | ||
| - | SELECT AVG(duration) | ||
| - | FROM youtube_top_100_songs_2025.youtube_top_100_songs_2025; | ||
| - | </ | ||
| - | |||
| - | **MAX/MIN** – Längster / Kürzester Song | ||
| - | <code sql> | ||
| - | SELECT MAX(duration) FROM youtube_top_100_songs_2025.youtube_top_100_songs_2025; | ||
| - | SELECT MIN(duration) FROM youtube_top_100_songs_2025.youtube_top_100_songs_2025; | ||
| - | </ | ||
| - | |||
| - | **GROUP BY** – Wie viele Missionen pro Firma | ||
| - | <code sql> | ||
| - | SELECT company, COUNT(*) AS starts | ||
| - | FROM spacemission.missions | ||
| - | GROUP BY company | ||
| - | ORDER BY starts DESC | ||
| - | LIMIT 10; | ||
| - | </ | ||
| - | |||
| - | **HAVING** – Firmen mit über 100 Missionen (Top 5) | ||
| - | <code sql> | ||
| - | SELECT company, COUNT(*) AS starts | ||
| - | FROM spacemission.missions | ||
| - | GROUP BY company | ||
| - | HAVING COUNT(*) > 100 | ||
| - | ORDER BY starts DESC | ||
| - | LIMIT 5; | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 6. Tipps & Best Practices ===== | ||
| - | |||
| - | <WRAP tip center round 70%> | ||
| - | **Aliasse** | ||
| - | *Spalten:* '' | ||
| - | *Tabellen:* '' | ||
| - | Wenn Sie einer Tabelle einen Alias geben, **verwenden Sie ihn konsequent** ('' | ||
| - | </ | ||
| <WRAP tip center round 70%> | <WRAP tip center round 70%> | ||
| Zeile 167: | Zeile 82: | ||
| </ | </ | ||
| - | <WRAP tip center round 70%> | ||
| - | **NULL-Fallen** | ||
| - | '' | ||
| - | Bei Quoten/ | ||
| - | </ | ||
| - | <WRAP info center round 70%> | ||
| - | **Weiterführend / Struktur in mehrere Seiten** | ||
| - | Für grössere Lernpakete empfiehlt sich eine Aufteilung: | ||
| - | • **LU10/Teil A:** Aggregatfunktionen Basics (COUNT, SUM, AVG, MIN/ | ||
| - | • **LU10/Teil B:** GROUP BY – ein- und mehrspaltig, | ||
| - | • **LU10/Teil C:** HAVING – Gruppen filtern, typische Muster | ||
| - | • **LU10/Teil D:** Performance & Indizes, Best Practices, kleine Mini-Projekte | ||
| - | </ | ||
| === Infos zu den Firmen involviert in die "Space Race" === | === Infos zu den Firmen involviert in die "Space Race" === | ||
| + | <WRAP box center round 80%> | ||
| ^ Kürzel in Liste ^ Ausgeschrieben / Organisation ^ Land / Region ^ | ^ Kürzel in Liste ^ Ausgeschrieben / Organisation ^ Land / Region ^ | ||
| | **RVSN USSR** | Strategic Missile Forces of the USSR (Raketentruppen der strategischen Bestimmung) | **Sowjetunion** (historisch) | | | **RVSN USSR** | Strategic Missile Forces of the USSR (Raketentruppen der strategischen Bestimmung) | **Sowjetunion** (historisch) | | ||
| Zeile 195: | Zeile 98: | ||
| | **Boeing** | The Boeing Company (Boeing Launch Services / Delta-Programm) | **USA** | | | **Boeing** | The Boeing Company (Boeing Launch Services / Delta-Programm) | **USA** | | ||
| + | </ | ||