Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m290_guko:learningunits:lu10:theorie:b_group_by [2025/11/09 17:13] gkochmodul: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 ======
  
 {{ :modul:m290_guko:learningunits:lu10:theorie:group_by-sum.webp?900 |}} {{ :modul:m290_guko:learningunits:lu10:theorie:group_by-sum.webp?900 |}}
Zeile 9: Zeile 9:
 </WRAP> </WRAP>
  
-=== 1. Regeln bei Abfragen mit Aggregatfunktionen ===+===== 1. Regeln bei Abfragen mit Aggregatfunktionen =====
 <WRAP round 80% box center> <WRAP round 80% box center>
   * In ''SELECT'' dürfen neben Aggregaten **nur** Spalten stehen, die auch im ''GROUP BY'' vorkommen.     * In ''SELECT'' dürfen neben Aggregaten **nur** Spalten stehen, die auch im ''GROUP BY'' vorkommen.  
Zeile 15: Zeile 15:
 </WRAP> </WRAP>
  
-=== 2. Beispiel: Wie viele Missionen pro Firma (Top 10)? ===+<WRAP alert center round 70%> 
 +**Typischer Fehler:**   
 +<code sql> 
 +SELECT gemeindename, SUM(straftaten_total) 
 +FROM einbrueche;  -- ❌ fehlendes GROUP BY → Fehler/Zufallswerte 
 +</code> 
 +Immer **alle nicht aggregierten Spalten** ins ''GROUP BY'' aufnehmen. 
 +</WRAP> 
 + 
 +===== 2. Beispiel: Wie viele Missionen pro Firma (Top 10)? =====
 <WRAP round 80% box center> <WRAP round 80% box center>
 <code sql> <code sql>
Zeile 25: Zeile 34:
 </code> </code>
 **Was passiert?** Wir **zählen** pro Firma und sortieren absteigend; ''LIMIT'' begrenzt die Ausgabe. **Was passiert?** Wir **zählen** pro Firma und sortieren absteigend; ''LIMIT'' begrenzt die Ausgabe.
 +{{:modul:m290_guko:learningunits:lu10:theorie:company_starts.png?nolink&300|}}
 +//Firmen und Starts – Infos zu den Firmen-Kürzel gibts ganz am Schluss dieser Seite.//
 </WRAP> </WRAP>
  
-=== 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 
-       SUM(straftaten_total) AS total_faelle +FROM einbrueche
-FROM zh_einbrueche.einbrueche+
 GROUP BY ausgangsjahr GROUP BY ausgangsjahr
-ORDER BY ausgangsjahr;+ORDER BY ausgangsjahr DESC 
 +LIMIT 5;
 </code> </code>
-**Was passiert?** ''SUM(...)'' aggregiert pro Jahr; ''ORDER BY'' sortiert chronologisch.+**Was passiert?** ''SUM(...)'' aggregiert pro Jahr (''GROUP BY ausgangsjahr''); ''ORDER BY ... DESC'' sortiert chronologisch absteigend. ''LIMIT 5'' -> max 5 Ergebnisse. 
 +{{:modul:m290_guko:learningunits:lu10:theorie:einbrueche_zh.png?nolink&300|}} 
 +//Während den Pandemie-Jahren ging die Zahl der Einbrüche im Kanton Zürich zurück – jetzt steigt sie wieder an.//
 </WRAP> </WRAP>
  
-=== 3.4 Beispiel: Total pro Jahr **und** Tatbestand === 
-<WRAP round 80% box center> 
-<code sql> 
-SELECT ausgangsjahr, 
-       tatbestand, 
-       SUM(straftaten_total) AS total_faelle 
-FROM zh_einbrueche.einbrueche 
-GROUP BY ausgangsjahr, tatbestand 
-ORDER BY ausgangsjahr, tatbestand; 
-</code> 
-**Was passiert?** Mehrspaltiges ''GROUP BY'' → Kennzahlen pro (Jahr × Tatbestand). 
-</WRAP> 
- 
-<WRAP alert center round 70%> 
-**Typischer Fehler:**   
-<code sql> 
-SELECT gemeindename, SUM(straftaten_total) 
-FROM zh_einbrueche.einbrueche;  -- ❌ fehlendes GROUP BY → Fehler/Zufallswerte 
-</code> 
-Immer **alle nicht aggregierten Spalten** ins ''GROUP BY'' aufnehmen. 
-</WRAP> 
- 
----- 
  
 ===== 4. HAVING – Gruppen nach Kennzahlen filtern ===== ===== 4. HAVING – Gruppen nach Kennzahlen filtern =====
Zeile 71: Zeile 61:
 </WRAP> </WRAP>
  
-=== 4.2 Beispiel: Firmen mit **mehr als 100** Missionen (Top 5) === 
-<WRAP round 80% box center> 
-<code sql> 
-SELECT company, 
-       COUNT(*) AS starts 
-FROM spacemission.missions 
-GROUP BY company 
-HAVING COUNT(*) > 100 
-ORDER BY starts DESC 
-LIMIT 5; 
-</code> 
-**Was passiert?** Erst **gruppieren**, dann **Gruppen** mit ''COUNT > 100'' **behalten**. 
-</WRAP> 
  
-=== 4.Beispiel: Jahre mit über **25'000** Einbruch-Fällen (ZH) ===+=== 4.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 
-       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 96: Zeile 72:
 </code> </code>
 **Was passiert?** ''HAVING'' filtert nur jene **Jahre**, deren Summe über dem Schwellwert liegt. **Was passiert?** ''HAVING'' filtert nur jene **Jahre**, deren Summe über dem Schwellwert liegt.
 +{{:modul:m290_guko:learningunits:lu10:theorie:total_faelle_having.png?nolink&300|}}
 </WRAP> </WRAP>
  
----- 
- 
-===== 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; 
-</code> 
- 
-**SUM** – Views aller 100 YouTube-Songs   
-<code sql> 
-SELECT SUM(view_count) 
-FROM youtube_top_100_songs_2025.youtube_top_100_songs_2025; 
-</code> 
- 
-**AVG** – Durchschnittliche Songdauer   
-<code sql> 
-SELECT AVG(duration) 
-FROM youtube_top_100_songs_2025.youtube_top_100_songs_2025; 
-</code> 
- 
-**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; 
-</code> 
- 
-**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; 
-</code> 
- 
-**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; 
-</code> 
-</WRAP> 
- 
----- 
- 
-===== 6. Tipps & Best Practices ===== 
- 
-<WRAP tip center round 70%> 
-**Aliasse**   
-*Spalten:* ''SELECT SUM(x) AS total'' → ''AS'' ist optional (''SELECT SUM(x) total'').   
-*Tabellen:* ''FROM t AS x'' oder ''FROM t x'' (in MySQL beides ok).   
-Wenn Sie einer Tabelle einen Alias geben, **verwenden Sie ihn konsequent** (''x.col'' statt ''t.col''). 
-</WRAP> 
  
 <WRAP tip center round 70%> <WRAP tip center round 70%>
Zeile 165: Zeile 82:
 </WRAP> </WRAP>
  
-<WRAP tip center round 70%> 
-**NULL-Fallen**   
-''COUNT(spalte)'' ignoriert NULL → bewusste Spaltenwahl!   
-Bei Quoten/Prozenten Division durch 0 vermeiden: ''NULLIF(denominator, 0)''. 
-</WRAP> 
  
-<WRAP info center round 70%> + 
-**Weiterführend / Struktur in mehrere Seiten**   +=== Infos zu den Firmen involviert in die "Space Race" === 
-Für grössere Lernpakete empfiehlt sich eine Aufteilung:   +<WRAP box center round 80%> 
-• **LU10/Teil A:** Aggregatfunktionen Basics (COUNT, SUM, AVG, MIN/MAX  +^ Kürzel in Liste ^ Ausgeschrieben / Organisation ^ Land / Region ^ 
-• **LU10/Teil B:** GROUP BY – einund mehrspaltig, Sortierung, DISTINCT vsGROUP BY   +**RVSN USSR** | Strategic Missile Forces of the USSR (Raketentruppen der strategischen Bestimmung) | **Sowjetunion** (historisch) | 
-• **LU10/Teil C:** HAVING – Gruppen filtern, typische Muster   +| **CASC** | China Aerospace Science and Technology Corporation | **China** | 
-• **LU10/Teil D:** Performance Indizes, Best Practices, kleine Mini-Projekte+**Arianespace** | Arianespace S.A. (europäischer Launch-Dienstleister) | **Europa Frankreich** | 
 +| **General Dynamics** | General Dynamics Astronautics (u. a. Atlas-Programm; historisch| **USA** | 
 +**VKS RF** | Russian Aerospace Forces (WKS / Vozdushno-Kosmicheskiye Sily) | **Russland** | 
 +| **NASA** | National Aeronautics and Space Administration | **USA** | 
 +| **SpaceX** | Space Exploration Technologies Corp| **USA** | 
 +**US Air Force** | United States Air Force (historischer Launch-Operator) | **USA** | 
 +**ULA** | United Launch Alliance (JV von Boeing Lockheed Martin) | **USA** | 
 +| **Boeing** | The Boeing Company (Boeing Launch Services / Delta-Programm) | **USA** | 
 </WRAP> </WRAP>
  
  • modul/m290_guko/learningunits/lu10/theorie/b_group_by.1762704831.txt.gz
  • Zuletzt geändert: 2025/11/09 17:13
  • von gkoch