CTE-uri cu subinterogări imbricate
Dacă ajungi să listezi mai multe subinterogări în clauza FROM cu instrucțiuni imbricate, interogarea ta va deveni rapid lungă, complexă și greu de citit.
Deoarece multe interogări sunt scrise cu intenția de a fi salvate și rulate din nou în viitor, organizarea corespunzătoare este esențială pentru un flux de lucru eficient. Structurarea subinterogărilor ca CTE-uri îți va economisi timp, spațiu și confuzie pe termen lung!
Acest exercițiu face parte din cursul
Manipularea datelor în SQL
Instrucțiuni pentru exercițiu
- Declară un CTE care calculează numărul total de goluri din meciurile din august ale sezonului
'2013/2014'. - Filtrează lista din subinterogarea interioară pentru a selecta doar meciurile din august ale sezonului
'2013/2014'. - Aplică
LEFT JOINîntre CTE și tabelul league folosindcountry_iddin CTE-ulmatch_list.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
-- 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;