Stefan Kierek – RADONART

  • Home
  • Niederrhein
  • Musik&Art
  • Surreal
  • Architecture
  • Luftaufnahmen
  • Portrait
  • Wettbewerb
  • Meine Kalender
  • Bilder kaufen
  • Schule
    • Informatik 5
      • Avatare im Internet
    • Informatik 10
      • SQL
        • 1. SQL: Einführung
        • 2. SQL: Daten verwalten
        • 3. SQL: Quiz
        • 4. SQL: JOIN und Aggregation

4. SQL: JOIN und Aggregation

Von Kierek
SQL – Ihr werdet Lehrkräfte!

🎓 Ihr werdet Lehrkräfte!

SQL-Aufgaben selbst erstellen und anderen erklären

📚 JOIN 📊 Aggregation ✏️ Eigene Aufgaben 📄 PDF-Export
🤖
SQL Lerncoach – Dein KI-Tutor für SQL! Du hast eine Frage zu SQL? Frag den Lerncoach – er erklärt dir alles auf Deutsch. Klick hier! →
🗄️
Unsere Datenbank (Zur Erinnerung) ▾

Wir nutzen weiterhin unsere Online-Shop-Datenbank aus den letzten Stunden. Öffne SQLite Online und lade die Datenbank.

🔗 SQLite Online öffnen
CustomersCustomerID, CustomerName, City, Country …
OrdersOrderID, CustomerID, EmployeeID, OrderDate …
OrderDetailsOrderDetailID, OrderID, ProductID, Quantity
ProductsProductID, ProductName, Price …
EmployeesEmployeeID, LastName, FirstName …
CategoriesCategoryID, CategoryName …
💡 TippWenn du nicht mehr weißt, welche Spalten in einer Tabelle sind, klicke einfach im linken Menü auf den Tabellennamen.
1
Neuer Befehl: JOIN – Tabellen verbinden ▾
🔗 Was macht JOIN? Mit JOIN kannst du Daten aus zwei oder mehr Tabellen gleichzeitig abfragen und miteinander verbinden. Das ist nötig, wenn die gesuchten Informationen auf verschiedene Tabellen verteilt sind.

Beispiel: In der Tabelle Orders steht nur die CustomerID, nicht der Name. Mit JOIN holen wir den Namen aus Customers.

Orders (Auszug)Customers (Auszug)
OrderIDCustomerIDCustomerIDCustomerName
102489090Vins et alcools Chevalier
102498181Toms Spezialitäten

Die CustomerID ist der gemeinsame Schlüssel – damit verbinden wir die beiden Tabellen.

📝 Syntax von JOIN – Zeile für Zeile erklärt:
SELECT  Customers.CustomerName,  Orders.OrderID,  Orders.OrderDate
FROM Orders
JOIN Customers  ON  Orders.CustomerID =  Customers.CustomerID;
Code-TeilWas bedeutet das?
SELECT Customers.CustomerName, ... Welche Spalten soll das Ergebnis zeigen? Da wir aus zwei Tabellen abfragen, schreiben wir Tabellenname.Spaltenname, damit SQL weiß, woher die Spalte kommt.
FROM Orders Die erste (Haupt-)Tabelle, aus der wir starten. Hier beginnt SQL zu lesen.
JOIN Customers Die zweite Tabelle, die wir dazunehmen und mit der ersten verbinden wollen.
ON Orders.CustomerID = Customers.CustomerID Die Verbindungsbedingung: Beide Tabellen teilen sich die CustomerID. SQL sucht Zeilen, bei denen diese ID übereinstimmt, und fügt sie zusammen.
🧩 Merkhilfe: Stell dir JOIN wie einen Reißverschluss vor. FROM ist die linke Seite, JOIN die rechte – und ON ist der Zahn, der beide zusammenhält.

🎯 Noch ein Beispiel: Welcher Mitarbeiter hat welche Bestellung bearbeitet?

SELECT Employees.LastName, Employees.FirstName, Orders.OrderID, Orders.OrderDate
FROM Orders
JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderDate DESC
LIMIT 10;
— Zeige die 10 neuesten Bestellungen mit dem Namen des Mitarbeiters
⚠️ Häufiger Fehler: Wenn eine Spalte in beiden Tabellen vorkommt (z. B. CustomerID), musst du immer angeben, von welcher Tabelle sie stammt: Orders.CustomerID
🧪 Probiere selbst aus:
Zeige den Produktnamen (Products.ProductName) und die bestellte Menge (OrderDetails.Quantity) für alle Bestelldetails an.
Tipp: Verbinde OrderDetails mit Products über ProductID.
2
Neuer Befehl: Aggregation – Daten zusammenfassen ▾
📊 Was ist Aggregation? Mit Aggregationsfunktionen fasst du viele Daten zu einem Ergebnis zusammen – z. B. „Wie viele Kunden gibt es?“ oder „Was ist der teuerste Preis?“.
Die wichtigsten Aggregationsfunktionen:
FunktionBedeutungBeispiel
COUNT(*)Anzahl der Zeilen zählenWie viele Bestellungen?
SUM(Spalte)Summe berechnenGesamtmenge aller Bestellungen
AVG(Spalte)Durchschnitt berechnenDurchschnittspreis der Produkte
MAX(Spalte)Größten Wert findenTeuerster Preis
MIN(Spalte)Kleinsten Wert findenGünstigster Preis

📝 Beispiel 1: Wie viele Kunden gibt es insgesamt? – Zeile für Zeile erklärt:

SELECT  COUNT(*)  AS  AnzahlKunden
FROM Customers;
Code-TeilWas bedeutet das?
COUNT(*) Zählt alle Zeilen in der Tabelle. Das * steht für „alle“ – egal was in den Spalten steht.
AS AnzahlKunden Gibt der Ergebnisspalte einen eigenen Namen (Alias). Statt einer unleserlichen Spaltenüberschrift steht dann „AnzahlKunden“ im Ergebnis.
FROM Customers Sagt SQL, in welcher Tabelle gezählt werden soll.

📝 Beispiel 2: Mit GROUP BY – Pro Gruppe zählen:

Wie viele Kunden gibt es aus jedem Land?

SELECT  Country,  COUNT(*)  AS  Anzahl
FROM Customers
GROUP BY Country
ORDER BY Anzahl DESC;
Code-TeilWas bedeutet das?
SELECT Country, COUNT(*) AS Anzahl Wir wollen den Ländernamen sehen und dazu, wie oft er vorkommt (gezählt mit COUNT).
FROM Customers Wir schauen in der Tabelle Customers nach.
GROUP BY Country SQL gruppiert alle Zeilen mit demselben Land zusammen – danach zählt COUNT pro Gruppe. Wichtig: Jede Spalte im SELECT, die keine Aggregatfunktion ist, muss hier auftauchen!
ORDER BY Anzahl DESC Sortiert das Ergebnis absteigend (DESC = größte Zahl zuerst). So sehen wir zuerst die Länder mit den meisten Kunden.
💡 Reihenfolge merken: SQL-Befehle folgen immer dieser Reihenfolge: SELECT → FROM → JOIN → WHERE → GROUP BY → ORDER BY → LIMIT. Du brauchst nicht alle – aber die Reihenfolge muss stimmen!

🎯 Großes Beispiel: JOIN + Aggregation kombiniert – Zeile für Zeile erklärt

Welcher Kunde hat die meisten Bestellungen?

SELECT  Customers.CustomerName,  COUNT(Orders.OrderID)  AS  AnzahlBestellungen
FROM Orders
JOIN Customers  ON  Orders.CustomerID =  Customers.CustomerID
GROUP BY Customers.CustomerName
ORDER BY AnzahlBestellungen DESC
LIMIT 5;
Code-TeilWas bedeutet das?
SELECT Customers.CustomerName, COUNT(Orders.OrderID) AS AnzahlBestellungen Zeige den Kundennamen und zähle, wie viele OrderID-Einträge es pro Kunde gibt. Das Ergebnis heißt „AnzahlBestellungen“.
FROM Orders Startpunkt ist die Tabelle Orders – sie enthält alle Bestellungen.
JOIN Customers ON Orders.CustomerID = Customers.CustomerID Verbinde Orders mit Customers: Zu jeder Bestellung holen wir den passenden Kundennamen.
GROUP BY Customers.CustomerName Gruppiere alle Zeilen pro Kunde. Danach zählt COUNT, wie viele Bestellungen jeder Kunde hat.
ORDER BY AnzahlBestellungen DESC Sortiere so, dass der Kunde mit den meisten Bestellungen ganz oben steht.
LIMIT 5 Zeige nur die Top 5 Kunden – nicht die ganze Liste.
🧪 Probiere selbst aus:
Was ist der durchschnittliche Preis (Price) aller Produkte in der Tabelle Products?
Tipp: Nutze AVG() und nenne die Spalte DurchschnittPreis.
3
Eure Aufgabe: Werdet Lehrkräfte! ▾
🎯 Was sollt ihr tun? Ihr seid heute die Lehrkräfte! Erfindet 3 eigene SELECT-Aufgaben mit steigendem Schwierigkeitsgrad. Eure Aufgaben werden später von euren Mitschülerinnen und Mitschülern gelöst.
Stufe 1 – Einfach Einfache Abfrage

Nutzt SELECT mit einer WHERE-Bedingung.
Beispiel: „Zeige alle Kunden aus Berlin an.“

Stufe 2 – Mittel Mehrere Bedingungen oder Sortierung

Kombiniert WHERE, ORDER BY oder LIMIT.
Beispiel: „Liste alle Bestellungen von 2023 auf, sortiert nach Bestelldatum.“

Stufe 3 – Schwer JOIN oder Aggregation

Nutzt JOIN, GROUP BY und COUNT.
Beispiel: „Welcher Kunde hat die meisten Bestellungen? Zeige Name und Anzahl.“

✅ Wichtig für gute Aufgaben:
• Schreibt deutlich, welche Spalten ausgegeben werden sollen.
• Formuliert die Aufgabe klar und verständlich (stellt euch vor, jemand kennt die Lösung nicht).
• Notiert auch eure eigene Musterlösung als SQL-Code.
4
Meine Aufgaben eingeben & als PDF herunterladen ▾

📋 Meine Angaben

Stufe 1 Meine einfache Aufgabe

Stufe 2 Meine mittlere Aufgabe

Stufe 3 Meine schwere Aufgabe

💬 Reflexion: Was habe ich gelernt?

💡 Das PDF enthält alle Erklärungen und deine eigenen Aufgaben. Du kannst es dann an deine Mitschüler:innen weitergeben.

📋 Vorschau: Meine Aufgaben

CC BY-NC-ND 4.0 – Dieses Material von Stefan Kierek ist lizenziert unter Creative Commons Namensnennung – Nicht kommerziell – Keine Bearbeitungen 4.0 International.

Datenbank: AppCamps (CC BY-SA) • SQLite Online • SQL Lerncoach

Veröffentlicht unter Informatik 10, SQL |
« 3. SQL: Quiz

Hinterlassen Sie einen Kommentar Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

looking-up Crying-2 Ein-Leben-in-der-Matrix Übersicht Bilder Weg-in-eine-ungewisse-Zukunft Wie-eine-Spinne....... Licht-im-Wald-scaled Idylle-auf-dem-Land-scaled Ausfahrt-mit-Hund-scaled Waffen-einer-Frau

Schlagwörter

Ausstellung Bahnhof Baum Blumen Boeckelt Bottrop Demokratie DJI Drohne Duisburg Düsseldorf fineart Frankfurt Frieden Gedichte Geldern Gesellschaft Halde Haniel Haniel Herbst Herbst-Art Industrie Informatik Luftaufnahme Medienhafen Motion Blur Musik Niederrhein Oberhausen Ostsee painted Pflanzen Poesie Populismus Rika Ruhrgebiet See Sonnenuntergang SQL surreal Tiger&Turtle Toleranz tree Wettbewerb Zukunft

Meta

  • Anmelden
  • Feed der Einträge
  • Kommentar-Feed
  • WordPress.org

Links

  • Home
  • Niederrhein
  • Musik&Art
  • Surreal
  • Architecture
  • Luftaufnahmen
  • Portrait
  • Wettbewerb
  • Meine Kalender
  • Bilder kaufen
  • Schule
    • Informatik 5
      • Avatare im Internet
    • Informatik 10
      • SQL
        • 1. SQL: Einführung
        • 2. SQL: Daten verwalten
        • 3. SQL: Quiz
        • 4. SQL: JOIN und Aggregation

Seiten

  • 3 Fragen zum Nachdenken – Binärcode
  • Algorithmus – Marmeladenbrötchen
  • Andere Quellen
  • Das Winkeralphabet
  • Distanzunterricht an der Gesamtschule Geldern
  • H5P
    • EVAS-Prinzip
  • Impressum
  • Lückentext zum Binärcode
  • Sample Page
  • Tool
  • Video und Quiz: Binärcode

Archiv

  • Februar 2026
  • Januar 2026
  • Juli 2025
  • Juni 2025
  • April 2025
  • März 2024
  • August 2023
  • März 2023
  • Dezember 2022
  • November 2022
  • Oktober 2021
  • September 2021
  • Januar 2021
  • Oktober 2020

Kategorien

  • Architecture (4)
  • Digiart (17)
    • Motion Blur (5)
    • Symmetry (2)
  • Drohne (2)
  • Gedichte (3)
  • Geldern (6)
  • Informatik 10 (4)
    • SQL (4)
  • Informatik 5 (1)
  • Kommentar (2)
  • Landschaft (10)
  • Literatur (2)
  • Luftaufnahmen (3)
  • Monochrome (1)
  • Musik (2)
  • Musik&Art (5)
  • Niederrhein (10)
  • Panorama (2)
  • Podcast (1)
  • Poesie (2)
  • Portrait (2)
  • RADONART (14)
  • Schule (2)
  • Surreal (5)
  • Uncategorized (2)
  • Wettbewerb (4)

WordPress

  • Anmelden
  • WordPress

CyberChimps WordPress Themes

© Stefan Kierek