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
Ö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 JOINför att koppla CTE:n till league-tabellen viacountry_idfrån CTE:nmatch_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;