CTE's met geneste subquery's
Als je meerdere subquery's in de FROM-clausule met geneste statements opneemt, wordt je query waarschijnlijk lang, complex en lastig te lezen.
Omdat veel query's worden geschreven om later op te slaan en opnieuw uit te voeren, is een goede structuur essentieel voor een soepele workflow. Subquery's als CTE's organiseren bespaart je op de lange termijn tijd, ruimte en verwarring!
Deze oefening maakt deel uit van de cursus
Gegevens manipuleren in SQL
Oefeninstructies
- Declareer een CTE die de totale doelpunten berekent uit wedstrijden in augustus van het seizoen
'2013/2014'. - Filter in de binnenste subquery zodat alleen wedstrijden in augustus van het seizoen
'2013/2014'worden geselecteerd. - Voer een
LEFT JOINuit van de CTE op de league-tabel viacountry_iduit dematch_list-CTE.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
-- 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;