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 sentenciaCASE
comprobando sim.home_goal
no es igual am.away_goal
, asignando un valor de0
si 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;