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
Instrukcje do ćwiczenia
- Uzupełnij składnię, aby zadeklarować CTE.
- W CTE wybierz
country_idiidmeczu z tabelimatch. - Połącz CTE z tabelą ligi za pomocą
LEFT JOIN, używając kolumnycountry_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;