Zacznij terazZacznij za darmo

Porządkujemy kod za pomocą CTE

W rozdziale 2 wygenerowałeś(-aś) listę krajów i liczbę meczów w każdym z nich, w których padło łącznie ponad 10 goli. Zapytanie z tamtego ćwiczenia wykorzystywało podzapytanie w klauzuli FROM, aby odfiltrować mecze przed ich zliczeniem w zapytaniu głównym. Oto zapytanie, które wtedy powstało:

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;

Jedno lub więcej podzapytań możesz zapisać jako wspólne wyrażenia tabelowe (CTE – Common Table Expressions), deklarując je przed zapytaniem głównym. To doskonały sposób na organizację informacji i nadanie zapytaniu logicznej struktury.

W tym ćwiczeniu przepiszesz podobne zapytanie z użyciem CTE.

To ćwiczenie jest częścią kursu

Data Manipulation in SQL

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij składnię, aby zadeklarować CTE.
  • W CTE wybierz country_id i id meczu z tabeli match.
  • Połącz CTE z tabelą ligi za pomocą LEFT JOIN, używając kolumny country_id.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

-- 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;
Edytuj i uruchom kod