====== LU10b: Gruppieren mit GROUP BY – Kennzahlen pro Kategorie ====== {{ :modul:m290_guko:learningunits:lu10:theorie:group_by-sum.webp?900 |}} **Warum GROUP BY?** Ohne ''GROUP BY'' erhalten Sie **eine einzige** Aggregatkennzahl über **alle** Zeilen. Mit ''GROUP BY'' erhalten Sie **eine Zeile pro Gruppe** (z. B. pro Jahr, pro Firma, pro Gemeinde). ===== 1. Regeln bei Abfragen mit Aggregatfunktionen ===== * In ''SELECT'' dürfen neben Aggregaten **nur** Spalten stehen, die auch im ''GROUP BY'' vorkommen. * ''WHERE'' filtert **Zeilen vor** dem Gruppieren; ''HAVING'' filtert **Gruppen nach** dem Gruppieren. **Typischer Fehler:** SELECT gemeindename, SUM(straftaten_total) FROM einbrueche; -- ❌ fehlendes GROUP BY → Fehler/Zufallswerte Immer **alle nicht aggregierten Spalten** ins ''GROUP BY'' aufnehmen. ===== 2. Beispiel: Wie viele Missionen pro Firma (Top 10)? ===== SELECT company, COUNT(*) AS starts FROM missions GROUP BY company ORDER BY starts DESC LIMIT 10; **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.// ===== 3. Beispiel: Total Einbrüche pro Jahr (Kanton ZH) ===== SELECT ausgangsjahr, SUM(straftaten_total) AS total_faelle FROM einbrueche GROUP BY ausgangsjahr ORDER BY ausgangsjahr DESC LIMIT 5; **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.// ===== 4. HAVING – Gruppen nach Kennzahlen filtern ===== === 4.1 Warum HAVING? === ''WHERE'' kann **keine** Aggregatfunktionen enthalten. Wenn Sie **Gruppen** nach einer **Kennzahl** (z. B. ''SUM(...)'', ''COUNT(...)'') filtern möchten → **''HAVING''**. === 4.2 Beispiel: Jahre mit über 25'000 Einbruch-Fällen (ZH) === SELECT ausgangsjahr, SUM(straftaten_total) AS total_faelle FROM einbrueche GROUP BY ausgangsjahr HAVING SUM(straftaten_total) > 25000 ORDER BY total_faelle DESC; **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|}} **WHERE vs. HAVING** • ''WHERE'': Zeilen **vor** dem Gruppieren filtern (z. B. Jahre ab 2018). • ''HAVING'': **Gruppen** nach **Aggregaten** filtern (z. B. ''SUM(...) > 25000''). === Infos zu den Firmen involviert in die "Space Race" === ^ Kürzel in Liste ^ Ausgeschrieben / Organisation ^ Land / Region ^ | **RVSN USSR** | Strategic Missile Forces of the USSR (Raketentruppen der strategischen Bestimmung) | **Sowjetunion** (historisch) | | **CASC** | China Aerospace Science and Technology Corporation | **China** | | **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** |