CASE 문 필터링하기
이탈리아 Bologna 팀이 승리한 경기 목록을 만들어 볼까요? 두 테이블에는 다른 팀들도 꽤 많이 있으므로, 실용적인 쿼리를 만들려면 WHERE 절에서 CASE 문을 필터로 사용하는 것이 핵심이에요.
CASE 문을 사용하면 관심 있는 데이터를 범주화하고, 관심 없는 데이터는 제외할 수 있어요. 이를 위해 WHERE 절에서 CASE 문을 필터로 사용하여 보고 싶지 않은 출력값을 제거할 수 있습니다.
다음과 같이 설정할 수 있어요:
SELECT *
FROM table
WHERE
CASE WHEN a > 5 THEN 'Keep'
WHEN a <= 5 THEN 'Exclude' END = 'Keep';
요컨대, 데이터베이스의 다른 열처럼 CASE 문을 필터링용 열로 사용할 수 있습니다. 유일한 차이점은 WHERE 절에서는 해당 문에 별칭을 붙이지 않는다는 점이에요.
이 연습은 강의의 일부입니다
SQL에서의 데이터 조작
연습 안내
WHERE절의CASE문을 사용해hometeam_id가9857이고 홈 득점이 원정 득점보다 많은 경우만 필터링하세요.WHERE절의CASE문을 사용해awayteam_id가9857이고 원정 득점이 홈 득점보다 많은 경우만 필터링하세요.- Bologna가 승리하지 못한 경기는 제외하도록
CASE문을 마무리하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
SELECT
season,
date,
home_goal,
away_goal
FROM matches_italy
WHERE
-- Find games where home_goal is more than away_goal
___ ___ hometeam_id = 9857 ___ home_goal ___ away_goal ___ 'Bologna Win'
-- Find games where away_goal is more than home_goal
___ awayteam_id = 9857 ___ away_goal ___ home_goal ___ 'Bologna Win'
-- Exclude games not won by Bologna
___ IS NOT ___;