시작하기무료로 시작하기

중첩 하위 쿼리와 CTE

FROM 절에 중첩된 문과 함께 여러 하위 쿼리를 나열하게 되면, 쿼리가 길고 복잡해져 읽기 어려워질 수 있어요.

많은 쿼리는 저장해 두었다가 나중에 다시 실행하려는 의도로 작성되므로, 원활한 워크플로를 위해서는 체계적인 구성 이 중요합니다. 하위 쿼리를 CTE로 정리하면 장기적으로 시간, 공간, 혼란을 모두 줄일 수 있어요!

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

SQL에서의 데이터 조작

강의 보기

연습 안내

  • '2013/2014' 시즌의 8월 경기에서 득점을 계산하는 CTE를 선언하세요.
  • 내부 하위 쿼리에서 목록을 필터링해 '2013/2014' 시즌의 8월 경기만 선택하세요.
  • match_list CTE의 country_id를 사용해 해당 CTE를 리그 테이블에 LEFT JOIN 하세요.

실습형 인터랙티브 연습

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

-- Set up your CTE
___ match_list ___ (
    SELECT 
  		country_id,
  	   (home_goal + away_goal) AS goals
    FROM match
  	-- Create a list of match IDs to filter data in the CTE
    WHERE id IN (
       SELECT ___
       FROM ___
       WHERE season = ___ AND EXTRACT(MONTH FROM ___) = ___))
-- Select the league name and average of goals in the CTE
SELECT 
	___,
    ___(___)
FROM league AS l
-- Join the CTE onto the league table using country_id
LEFT JOIN ___ ON l.id = match_list.___
GROUP BY l.name;
코드 편집 및 실행