시작하기무료로 시작하기

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_id9857이고 홈 득점이 원정 득점보다 많은 경우만 필터링하세요.
  • WHERE 절의 CASE 문을 사용해 awayteam_id9857이고 원정 득점이 홈 득점보다 많은 경우만 필터링하세요.
  • 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 ___;
코드 편집 및 실행