Aan de slagGa gratis aan de slag

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

Cursus bekijken

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 JOIN uit van de CTE op de league-tabel via country_id uit de match_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;
Code bewerken en uitvoeren