CTE s vnořenými poddotazy
Pokud se ocitneš v situaci, kdy v klauzuli FROM vypisuješ více poddotazů s vnořenými příkazy, tvůj dotaz se rychle stane dlouhým, složitým a těžko čitelným.
Protože mnoho dotazů vzniká s tím, že je budeme ukládat a znovu spouštět, je přehledná organizace kódu klíčem k plynulé práci. Přeuspořádání poddotazů do CTE ti z dlouhodobého hlediska ušetří čas, místo i zbytečné zmatky!
Toto cvičení je součástí kurzu
Manipulace s daty v SQL
Pokyny k cvičení
- Deklaruj CTE, která vypočítá celkový počet gólů ze zápasů v srpnu sezóny
'2013/2014'. - Ve vnitřním poddotazu filtruj seznam tak, aby zahrnoval pouze zápasy z srpna sezóny
'2013/2014'. - Připoj CTE k tabulce ligy pomocí
LEFT JOINna základěcountry_idz CTEmatch_list.
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,
(home_goal + away_goal) AS goals
FROM match
-- Create a list of match IDs to filter data in the CTE
WHERE id IN (
SELECT ___
FROM ___
WHERE season = ___ AND EXTRACT(MONTH FROM ___) = ___))
-- Select the league name and average of goals in the CTE
SELECT
___,
___(___)
FROM league AS l
-- Join the CTE onto the league table using country_id
LEFT JOIN ___ ON l.id = match_list.___
GROUP BY l.name;