Fai pulizia con le CTE
Nel capitolo 2 hai generato un elenco di paesi e del numero di partite in ciascun paese con più di 10 goal totali. La query in quell’esercizio utilizzava una sottoquery nella clausola FROM per filtrare le partite prima di contarle nella query principale. Qui sotto trovi la query che avevi creato:
SELECT
c.name AS country,
COUNT(sub.id) AS matches
FROM country AS c
INNER JOIN (
SELECT country_id, id
FROM match
WHERE (home_goal + away_goal) >= 10) AS sub
ON c.id = sub.country_id
GROUP BY country;
Puoi elencare una (o più) sottoquery come common table expressions (CTE) dichiarandole prima della query principale: è un ottimo strumento per organizzare le informazioni e darle un ordine logico.
In questo esercizio, riscriviamo una query simile usando una CTE.
Questo esercizio fa parte del corso
Manipolazione dei dati in SQL
Istruzioni dell'esercizio
- Completa la sintassi per dichiarare la tua CTE.
- Seleziona
country_ide l’iddella partita dalla tabellamatchnella tua CTE. - Esegui un
LEFT JOINdella CTE con la tabella league usandocountry_id.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
-- Set up your CTE
___ match_list ___ (
SELECT
country_id,
___
FROM match
WHERE (home_goal + away_goal) >= 10)
-- Select league name and count of matches from the CTE
SELECT
l.name AS league,
COUNT(match_list.id) AS matches
FROM league AS l
-- Join the CTE to the league table using country_id
LEFT JOIN ___ ON l.id = ___
GROUP BY l.name;