IniziaInizia gratis

CTE con subquery annidate

Se ti ritrovi a elencare più subquery nella clausola FROM con istruzioni annidate, la query diventerà probabilmente lunga, complessa e difficile da leggere.

Dato che molte query vengono scritte con l’intenzione di essere salvate e ri-eseguite in futuro, una buona organizzazione è fondamentale per un flusso di lavoro senza intoppi. Disporre le subquery come CTE ti farà risparmiare tempo, spazio e confusione nel lungo periodo!

Questo esercizio fa parte del corso

Manipolazione dei dati in SQL

Visualizza il corso

Istruzioni dell'esercizio

  • Dichiara una CTE che calcoli i gol totali dalle partite di agosto della stagione '2013/2014'.
  • Applica il filtro nella subquery interna per selezionare solo le partite di agosto della stagione '2013/2014'.
  • Esegui un LEFT JOIN della CTE con la tabella league usando country_id dalla CTE match_list.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

-- 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;
Modifica ed esegui il codice