Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:m290_guko:learningunits:lu11:theorie:b_groupby [2026/11/01 12:11] – angelegt gkoch | de:modul:m290_guko:learningunits:lu11:theorie:b_groupby [2026/11/01 12:12] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== | + | ====== |
| - | ===== 0. Datensätze ===== | + | {{ de:modul:m290_guko:learningunits:lu10:theorie:group_by-sum.webp? |
| - | Wir arbeiten mit **realen Daten** aus unterschiedlichen Bereichen. Das macht die Übungen **praxisnah**: Wir beantworten echte Fragen, erkennen **Trends** und leiten **Kennzahlen** ab. | + | |
| - | Die drei Datensätze sind aus unterschiedlichen Sparten: | + | |
| - | * **Einbrüche** (Kanton Zürich) – Datenbank: '' | + | |
| - | * **Raumfahrt (1957–2022)** – Datenbank: '' | + | |
| - | * **Musiktrends (YouTube Top Songs 2025)** – Datenbank: '' | + | |
| - | + | < | |
| - | === Einbrüche (Kanton Zürich) === | + | **Warum GROUP BY?** |
| - | + | Ohne '' | |
| - | <WRAP center> | + | Mit '' |
| - | {{de: | + | |
| </ | </ | ||
| - | ((Bildquelle: | ||
| - | + | ===== 1. Regeln bei Abfragen mit Aggregatfunktionen ===== | |
| - | * **Zeitraum: | + | <WRAP round 80% box center> |
| - | * **Quelle:** Kantonspolizei ZH | + | * In '' |
| - | * **Lizenz:** CC0 | + | |
| - | * **Granularität: | + | |
| - | + | ||
| - | < | + | |
| - | **Was steckt drin? (Auszug Felder)** | + | |
| - | ^ Feld ^ Bedeutung ^ | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| </ | </ | ||
| - | **Beispielfragen: | + | < |
| - | * Wie viele Einbrüche gab es **letztes Jahr** in **meiner Gemeinde**? | + | **Typischer Fehler: |
| - | * Welche Gemeinden haben im **Durchschnitt** die **höchsten Raten**? | + | |
| - | + | ||
| - | === Space Missions === | + | |
| - | + | ||
| - | < | + | |
| - | {{de: | + | |
| - | </ | + | |
| - | ((Bildquelle: | + | |
| - | + | ||
| - | + | ||
| - | * **Zeitraum: | + | |
| - | * **Quelle:** Scrape von nextspaceflight.com | + | |
| - | * **Granularität: | + | |
| - | + | ||
| - | <WRAP box center round 80%> | + | |
| - | **Was steckt drin? (Auszug Felder)** | + | |
| - | ^ Feld ^ Bedeutung ^ | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | </ | + | |
| - | + | ||
| - | **Beispielfragen: | + | |
| - | * Wie viele Starts hat **SpaceX** im Vergleich zu **staatlichen Akteuren** bis **2022**? | + | |
| - | * Welche **Jahre** waren **startstark**, | + | |
| - | * Welche **aktiven Raketen** haben die **meisten erfolgreichen** Starts? | + | |
| - | + | ||
| - | === YouTube Top 100 (2025) === | + | |
| - | <WRAP center> | + | |
| - | {{de: | + | |
| - | </ | + | |
| - | ((Bildquelle: | + | |
| - | + | ||
| - | + | ||
| - | * **Stichtag: | + | |
| - | * **Umfang:** 100 Songs | + | |
| - | * **Granularität: | + | |
| - | + | ||
| - | <WRAP box center round 80%> | + | |
| - | **Was steckt drin? (Auszug Felder)** | + | |
| - | ^ Feld ^ Bedeutung ^ | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | </ | + | |
| - | + | ||
| - | **Beispielfragen: | + | |
| - | * Welche sind die **meistgespielten Songs 2025** und welche **Channels** sind **besonders erfolgreich**? | + | |
| - | * Gibt es einen **Zusammenhang** zwischen **Songdauer** und **Anzahl Views**? | + | |
| - | + | ||
| - | ==== Setup (Download & Import) ==== | + | |
| - | + | ||
| - | Laden Sie die vorbereiteten Datensätze herunter und importieren Sie sie: | + | |
| - | + | ||
| - | {{ de: | + | |
| - | + | ||
| - | + | ||
| - | {{ de: | + | |
| - | // | + | |
| - | + | ||
| - | + | ||
| - | <WRAP tip center round 70%> | + | |
| - | **Schema wählen (wichtig): | + | |
| - | Entweder im Editor-Dropdown das Schema wählen **oder** mit '' | + | |
| <code sql> | <code sql> | ||
| - | -- Beispiele: | + | SELECT gemeindename, |
| - | USE spacemission; | + | FROM einbrueche; -- ❌ fehlendes GROUP BY → Fehler/ |
| - | -- USE zh_einbrueche; | + | |
| - | -- USE youtube_top_100_songs_2025; | + | |
| </ | </ | ||
| + | Immer **alle nicht aggregierten Spalten** ins '' | ||
| </ | </ | ||
| - | + | ===== 2. Beispiel: Wie viele Missionen pro Firma (Top 10)? ===== | |
| - | ===== 1. Was sind Aggregatfunktionen – und warum braucht man sie? ===== | + | |
| <WRAP round 80% box center> | <WRAP round 80% box center> | ||
| - | Aggregatfunktionen fassen | + | <code sql> |
| - | Sie sind die Grundlage für **Berichte, Dashboards, BI-Auswertungen((Business Intelligence: systematische, | + | 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; '' | ||
| + | {{de:modul: | ||
| + | // | ||
| </ | </ | ||
| - | ==== 1.1 Die wichtigsten Aggregatfunktionen | + | ===== 3. Beispiel: Total Einbrüche pro Jahr (Kanton ZH) ===== |
| <WRAP round 80% box center> | <WRAP round 80% box center> | ||
| - | ^ Funktion ^ Zweck ^ NULL-Verhalten ^ | + | <code sql> |
| - | | '' | + | SELECT ausgangsjahr, |
| - | | '' | + | FROM einbrueche |
| - | | '' | + | GROUP BY ausgangsjahr |
| - | | '' | + | ORDER BY ausgangsjahr DESC |
| - | | '' | + | LIMIT 5; |
| - | | '' | + | </ |
| + | **Was passiert?** '' | ||
| + | {{de: | ||
| + | //Während den Pandemie-Jahren ging die Zahl der Einbrüche im Kanton Zürich zurück – jetzt steigt sie wieder an.// | ||
| </ | </ | ||
| - | <WRAP round 80% box center> | ||
| - | **Syntax (allgemein)** | ||
| - | <code sql> | ||
| - | </ | ||
| + | ===== 4. HAVING – Gruppen nach Kennzahlen filtern ===== | ||
| - | ===== 2. Einfache Aggregationen ===== | + | === 4.1 Warum HAVING? === |
| - | + | ||
| - | === 2.1 COUNT – Wie viele Datensätze sind es? === | + | |
| <WRAP round 80% box center> | <WRAP round 80% box center> | ||
| - | **Frage:** Wie viele Missionen befinden sich im Datensatz? | + | '' |
| - | <code sql> | + | Wenn Sie **Gruppen** nach einer **Kennzahl** (z. B. '' |
| - | SELECT COUNT(*) AS anzahl_missionen | + | |
| - | FROM missions; | + | |
| - | </ | + | |
| - | **Was passiert?** '' | + | |
| - | \\ | + | |
| - | <WRAP center> | + | |
| - | {{de: | + | |
| - | </ | + | |
| </ | </ | ||
| - | === 2.2 SUM – Summe bilden | + | |
| + | === 4.2 Beispiel: Jahre mit über 25'000 Einbruch-Fällen (ZH) === | ||
| <WRAP round 80% box center> | <WRAP round 80% box center> | ||
| - | **Frage:** Wie viele **Views** haben alle 100 YouTube-Songs zusammen? | ||
| <code sql> | <code sql> | ||
| - | SELECT SUM(view_count) AS views_total | + | SELECT |
| - | FROM youtube_top_100_songs_2025; | + | FROM einbrueche |
| + | GROUP BY ausgangsjahr | ||
| + | HAVING SUM(straftaten_total) > 25000 | ||
| + | ORDER BY total_faelle DESC; | ||
| </ | </ | ||
| - | **Was passiert?** '' | + | **Was passiert?** '' |
| - | \\ | + | {{de: |
| - | <WRAP center> | + | |
| - | {{de: | + | |
| - | //Ergebnis: 2025 haben die 100 meistgeklickten YouTube-Songs insgesamt über 10 Milliarden Views erzielt.// | + | |
| - | </ | + | |
| </ | </ | ||
| - | === 2.3 AVG – Durchschnitt berechnen === | + | |
| - | <WRAP round 80% box center> | + | < |
| - | **Frage:** Wie lang ist ein Song **im Durchschnitt**? | + | **WHERE vs. HAVING** |
| - | <code sql> | + | • '' |
| - | SELECT AVG(duration) AS avg_duration | + | • '' |
| - | FROM youtube_top_100_songs_2025; | + | |
| - | </ | + | |
| - | **Was passiert?** '' | + | |
| - | \\ | + | |
| - | <WRAP center> | + | |
| - | {{de: | + | |
| - | //Ergebnis: 2025 haben die 100 meistgeklickten YouTube-Songs eine durchschnittliche Song-Dauer von 3 min 24s.// | + | |
| - | </ | + | |
| </ | </ | ||
| - | === 2.4 MIN / MAX – Kleinster / Grösster Wert === | ||
| - | <WRAP round 80% box center> | ||
| - | **Fragen:** Längster Song? Kürzester Song? | ||
| - | <code sql> | ||
| - | -- Längster Song | ||
| - | SELECT MAX(duration) AS max_duration | ||
| - | FROM youtube_top_100_songs_2025; | ||
| - | -- Kürzester Song | + | === Infos zu den Firmen involviert in die "Space Race" === |
| - | SELECT MIN(duration) AS min_duration | + | <WRAP box center round 80%> |
| - | FROM youtube_top_100_songs_2025; | + | ^ Kürzel in Liste ^ Ausgeschrieben / Organisation ^ Land / Region ^ |
| - | </code> | + | | **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 | ||
| + | | **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 | ||
| - | **Was passiert?** '' | + | </WRAP> |
| - | \\ | + | |
| - | < | + | |
| - | {{de: | + | |
| - | //Ergebnis: Der längste Song in der Tabelle ist " | ||
| - | </ | ||
| - | </ | ||