Calcular el porcentaje con CASE y AVG
Las sentencias CASE devolverán cualquier valor que especifiques en tu cláusula THEN. Esta es una herramienta increíblemente potente para realizar cálculos sólidos y manipular datos cuando se utiliza junto con una sentencia agregada. Una tarea clave que puedes realizar es utilizar CASE dentro de una función AVG para calcular un porcentaje de información en tu base de datos.
Aquí tienes un ejemplo de cómo configurarlo:
AVG(CASE WHEN condition_is_met THEN 1
WHEN condition_is_not_met THEN 0 END)
Con este enfoque, es importante especificar exactamente qué registros cuentan como 0. ¡De lo contrario, tus cálculos pueden no ser correctos!
Tu tarea es examinar el número de victorias, derrotas y empates en cada país. La tabla matches está filtrada para incluir todos los partidos de las temporadas 2013/2014 y 2014/2015.
Este ejercicio forma parte del curso
Manipulación de datos en SQL
Instrucciones del ejercicio
- Dentro de una función
AVG(), completa la sentenciaCASEcomprobando sim.home_goalno es igual am.away_goal, asignando un valor de0si se cumple esta condición. - Repite este proceso para comparar los goles en casa y fuera en
'2014/2015', con el aliasties_2014_2015.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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;