Cálculo de porcentagem com CASE e AVG
Os comandos CASE retornarão qualquer valor que você especificar na cláusula THEN. Essa é uma ferramenta incrivelmente poderosa para cálculos robustos e manipulação de dados quando usada em conjunto com uma cláusula de agregação. Uma tarefa importante que você pode realizar é usar CASE dentro de uma função AVG para calcular uma porcentagem de informações no seu banco de dados.
Aqui está um exemplo de como você pode configurar isso:
AVG(CASE WHEN condition_is_met THEN 1
WHEN condition_is_not_met THEN 0 END)
Com essa abordagem, é importante especificar com precisão quais registros contam como 0, caso contrário, seus cálculos podem não estar corretos!
Sua tarefa é examinar o número de vitórias, derrotas e empates em cada país. A tabela matches foi filtrada para incluir todas as partidas das temporadas 2013/2014 e 2014/2015.
Este exercício faz parte do curso
Manipulação de dados em SQL
Instruções do exercício
- Em uma função
AVG(), conclua a instruçãoCASEverificando sem.home_goalnão é igual am.away_goal, atribuindo um valor de0se essa condição for atendida. - Repita esse processo para comparar os gols marcados dentro e fora de casa em
'2014/2015', com o aliasties_2014_2015.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
SELECT
c.name AS country,
-- Calculate the percentage 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_14,
___(___ ___ 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;