Aufräumen mit CTEs
In Kapitel 2 hast du eine Liste mit Ländern und der Anzahl der Spiele in jedem Land mit mehr als 10 Toren erstellt. Die Abfrage in jener Übung verwendete eine Unterabfrage in der FROM
-Anweisung, um die Spiele zu filtern, bevor sie in der Hauptabfrage gezählt wurden. Nachfolgend findest du die von dir erstellte Abfrage:
SELECT
c.name AS country,
COUNT(sub.id) AS matches
FROM country AS c
INNER JOIN (
SELECT country_id, id
FROM match
WHERE (home_goal + away_goal) >= 10) AS sub
ON c.id = sub.country_id
GROUP BY country;
Du kannst eine oder mehrere Unterabfragen als Common Table Expressions (CTEs, Allgemeine Tabellenausdrücke) auflisten, indem du sie vor deiner Hauptabfrage deklarierst. Das ist ein hervorragendes Werkzeug, um Informationen zu organisieren und in eine logische Reihenfolge zu bringen.
In dieser Übung wollen wir eine ähnliche Abfrage mit einem CTE umschreiben.
Diese Übung ist Teil des Kurses
Datenbearbeitung in SQL
Anleitung zur Übung
- Vervollständige die Syntax, um deinen CTE zu deklarieren.
- Wähle die
country_id
aus und stimmeid
aus der Tabellematch
in deinem CTE ab. - Führe unter Verwendung von
country_id
einen linksseitigen Join des CTE mit der Ligatabelle durch.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
-- Set up your CTE
___ match_list ___ (
SELECT
country_id,
___
FROM match
WHERE (home_goal + away_goal) >= 10)
-- Select league and count of matches from the CTE
SELECT
l.name AS league,
COUNT(match_list.id) AS matches
FROM league AS l
-- Join the CTE to the league table
LEFT JOIN ___ ON l.id = ___
GROUP BY l.name;