Kom igångKom igång gratis

CTE:er med nästade underfrågor

Om du listar flera underfrågor i FROM-satsen med nästade uttryck riskerar frågan att bli lång, komplex och svårläst.

Eftersom många frågor skrivs med avsikten att sparas och köras igen i framtiden är god struktur avgörande för ett smidigt arbetsflöde. Genom att organisera underfrågor som CTE:er sparar du tid, minskar kodens storlek och undviker onödig förvirring i längden!

Den här övningen är en del av kursen

Datahantering i SQL

Visa kurs

Övningsinstruktioner

  • Deklarera en CTE som beräknar det totala antalet mål från matcher i augusti under säsongen '2013/2014'.
  • Filtrera den inre underfrågan så att den bara väljer matcher från augusti under säsongen '2013/2014'.
  • Använd LEFT JOIN för att koppla CTE:n till league-tabellen via country_id från CTE:n match_list.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

-- 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;
Redigera och kör kod