IniziaInizia gratis

Usare CASE e AVG per ricavare frazioni

Le istruzioni CASE restituiscono qualsiasi valore tu specifichi nella clausola THEN. Se usate insieme a una funzione di aggregazione, sono uno strumento potentissimo per calcoli robusti e manipolazione dei dati. Un'operazione chiave che puoi svolgere è usare CASE dentro una funzione AVG per calcolare una frazione di informazioni nel tuo database.

Ecco un esempio di come impostarla:

AVG(CASE WHEN condition_is_met THEN 1
         WHEN condition_is_not_met THEN 0 END)

Con questo approccio, è importante indicare con precisione quali record valgono 0, altrimenti i calcoli potrebbero non essere corretti!

Il tuo compito è analizzare il numero di vittorie, sconfitte e pareggi in ogni paese. La tabella matches è filtrata per includere tutte le partite delle stagioni 2013/2014 e 2014/2015.

Questo esercizio fa parte del corso

Manipolazione dei dati in SQL

Visualizza il corso

Istruzioni dell'esercizio

  • All'interno di una funzione AVG(), completa l'istruzione CASE verificando che m.home_goal sia diverso da m.away_goal, assegnando il valore 0 se questa condizione è soddisfatta.
  • Ripeti il processo per confrontare i gol in casa e fuori nella stagione '2014/2015', usando l'alias ties_2014_2015.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

SELECT 
	c.name AS country,
    -- Calculate the fraction of tied games in each season
	___(___ ___ m.season='2013/2014' AND m.home_goal = m.away_goal THEN 1
			WHEN m.season='2013/2014' AND m.home_goal ___ m.away_goal THEN ___
			END) AS ties_2013_2014,
	___(___ ___ m.season='2014/2015' ___ ___ = ___ ___ ___
			WHEN m.season='2014/2015' ___ m.home_goal != m.away_goal THEN ___
			___) AS ___
FROM country AS c
LEFT JOIN matches AS m
ON c.id = m.country_id
GROUP BY country;
Modifica ed esegui il codice