IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Completa la sintassi per dichiarare la tua CTE.
  • Seleziona country_id e l’id della partita dalla tabella match nella tua CTE.
  • Esegui un LEFT JOIN della CTE con la tabella league usando country_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;
Modifica ed esegui il codice