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()함수 안에서m.home_goal이m.away_goal과 같지 않은지 확인하여 이 조건이 충족되면0의 값을 할당하도록CASE문을 완성하세요.- 같은 방식으로
'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;