ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Em uma função AVG(), conclua a instrução CASE verificando se m.home_goal não é igual a m.away_goal, atribuindo um valor de 0 se essa condição for atendida.
  • Repita esse processo para comparar os gols marcados dentro e fora de casa em '2014/2015', com o alias ties_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;
Editar e executar o código