LoslegenKostenlos loslegen

Bereinigen mit CTEs

In Kapitel 2 hast du eine Liste mit Ländern und der Anzahl der Spiele mit mehr als 10 Toren in den jeweiligen Ländern erstellt. Die Abfrage in jener Übung verwendete eine Unterabfrage in der FROM-Klausel, 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. Sie sind ein hervorragendes Hilfsmittel, um Informationen zu strukturieren 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

Kurs anzeigen

Anleitung zur Übung

  • Vervollständige die Syntax, um deinen CTE zu deklarieren.
  • Wähle die country_id aus und ordne id aus der Tabelle match in deinem CTE zu.
  • Führe mit LEFT JOIN den CTE in die Tabelle ein, indem du country_id benutzt.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

-- Set up your CTE
___ match_list ___ (
    SELECT 
  		country_id, 
  		___
    FROM match
    WHERE (home_goal + away_goal) >= 10)
-- Select league name 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 using country_id
LEFT JOIN ___ ON l.id = ___
GROUP BY l.name;
Code bearbeiten und ausführen