CASE와 AVG로 비율 계산하기
CASE 문은 THEN 절에 지정한 어떤 값이든 반환할 수 있어요. 이것은 집계 구문과 함께 사용할 때 견고한 계산과 데이터 조작을 가능하게 하는 매우 강력한 도구예요. 중요한 작업 중 하나는 데이터베이스의 특정 비율을 계산하기 위해 AVG 함수 안에서 CASE를 사용하는 것이에요.
다음은 설정 예시예요:
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;