ПочатиПочніть безкоштовно

Обчислення часток за допомогою CASE та AVG

Вирази CASE повертають будь-яке значення, яке ви вкажете в клаузі THEN. Це надзвичайно потужний інструмент для точних обчислень і маніпулювання даними, особливо разом із агрегувальними функціями. Одна з ключових технік — використовувати CASE всередині функції AVG, щоб обчислити частку записів у вашій базі даних.

Ось приклад такої побудови:

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

За такого підходу важливо чітко вказати, які записи рахувати як 0, інакше обчислення можуть бути некоректними!

Ваше завдання — проаналізувати кількість перемог, поразок і нічиїх у кожній країні. Таблицю matches відфільтровано так, щоб включити всі матчі сезонів 2013/2014 та 2014/2015.

Ця вправа є частиною курсу

Маніпулювання даними в SQL

Переглянути курс

Інструкції до вправи

  • Усередині функції AVG() доповніть вираз CASE, перевіривши, що m.home_goal не дорівнює m.away_goal, і присвойте значення 0, якщо ця умова виконується.
  • Повторіть цей підхід для порівняння голів господарів і гостей у сезоні '2014/2015', заалiasіть як ties_2014_2015.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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;
Редагувати та запускати код