开始使用免费开始使用

使用 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' 赛季的主客队进球数,并将结果别名为 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;
编辑并运行代码