시작하기무료로 시작하기

CTE 합치기

홈 팀과 원정 팀 상대를 식별하는 두 개의 서브쿼리를 만들었으니, 이제 homeaway 서브쿼리를 공통 테이블 표현식(CTEs) 으로 재구성할 차례입니다. 메인 쿼리에 SELECT DISTINCT 구문이 포함되어 있는 것을 확인할 수 있는데, DISTINCT 경기만 식별하지 않으면 각 경기마다 중복 레코드가 반환될 수 있습니다.

2014/2015 시즌에 맨체스터 유나이티드가 치른 모든 경기를 추출하는 쿼리 작성을 계속하세요.

이 연습은 강의의 일부입니다

SQL 데이터 조작

강의 보기

연습 안내

  • 메인 쿼리 전에 homeaway CTE를 선언하세요.
  • LEFT JOIN을 사용해 CTE를 match 테이블에 조인하세요.
  • CTE에서 관련 데이터를 메인 쿼리로 가져오세요.
  • 메인 쿼리에서 match의 날짜, CTE의 팀 이름, match의 홈/원정 득점을 선택하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

-- Set up the home team CTE
___ ___ ___ (
  SELECT m.id, t.team_long_name,
	  CASE WHEN m.home_goal > m.away_goal THEN 'MU Win'
		   WHEN m.home_goal < m.away_goal THEN 'MU Loss' 
  		   ELSE 'Tie' END AS outcome
  FROM match AS m
  LEFT JOIN team AS t ON m.hometeam_id = t.team_api_id),
-- Set up the away team CTE
___ ___ (
  SELECT m.id, t.team_long_name,
	  CASE WHEN m.home_goal > m.away_goal THEN 'MU Loss'
		   WHEN m.home_goal < m.away_goal THEN 'MU Win' 
  		   ELSE 'Tie' END AS outcome
  FROM match AS m
  LEFT JOIN team AS t ON m.awayteam_id = t.team_api_id)
-- Select the date, team names and goals
SELECT DISTINCT
    ___.___,
    ___.___ AS home_team_name,
    ___.___ AS away_team_name,
    ___.___,
    m.away_goal
-- Join the CTEs onto the match table
FROM match AS m
___ JOIN ___ ON m.id = ___
___ JOIN ___ ON m.id = ___
WHERE m.season = '2014/2015'
      AND (home.team_long_name = 'Manchester United' 
           OR away.team_long_name = 'Manchester United');
코드 편집 및 실행