Ukliď to pomocí CTE
Ve druhé kapitole jsi sestavil/a seznam zemí a počtu zápasů v každé zemi s více než 10 góly celkem. Dotaz v tomto cvičení využíval poddotaz v klauzuli FROM, aby bylo možné zápasy nejprve vyfiltrovat a teprve poté je v hlavním dotazu spočítat. Tady je dotaz, který jsi tehdy vytvořil/a:
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;
Jeden nebo více poddotazů můžeš zapsat jako společné tabulkové výrazy (CTE) tím, že je deklaruješ před hlavním dotazem. Je to skvělý způsob, jak organizovat informace a seřadit je v logickém pořadí.
V tomto cvičení přepišme podobný dotaz s využitím CTE.
Toto cvičení je součástí kurzu
Manipulace s daty v SQL
Pokyny k cvičení
- Doplň syntaxi pro deklaraci CTE.
- V rámci CTE vyber
country_idaidzápasu z tabulkymatch. - Připoj CTE k tabulce league pomocí
LEFT JOINna základěcountry_id.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
-- 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;