시작하기무료로 시작하기

CTE로 깔끔하게 정리하기

2장에서는 각 국가에서 총 득점이 10골을 넘는 경기 수를 구해 목록을 만들었습니다. 그 연습 문제의 쿼리는 메인 쿼리에서 집계하기 전에 경기를 필터링하기 위해 FROM 절 안에 서브쿼리를 사용했습니다. 아래는 여러분이 작성한 쿼리입니다:

SELECT
  c.name AS country,
  COUNT(sub.id) AS matches
FROM country AS c
INNER JOIN (
  SELECT country_id, id 
  FROM match
  WHERE (home_goal + away_goal) >= 10) AS sub
ON c.id = sub.country_id
GROUP BY country;

메인 쿼리 앞에 서브쿼리를 미리 선언하면 하나 이상의 서브쿼리를 공통 테이블 식(CTE)으로 나열할 수 있습니다. 이는 정보를 논리적인 순서로 구성하는 데 훌륭한 도구예요.

이번 연습에서는 CTE를 사용해 비슷한 쿼리를 다시 작성해 보겠습니다.

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

SQL에서의 데이터 조작

강의 보기

연습 안내

  • CTE를 선언하는 구문을 완성하세요.
  • CTE에서 match 테이블에서 country_id와 경기 id를 선택하세요.
  • country_id를 사용해 league 테이블과 CTE를 LEFT JOIN하세요.

실습형 인터랙티브 연습

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

-- Set up your CTE
___ match_list ___ (
    SELECT 
  		country_id, 
  		___
    FROM match
    WHERE (home_goal + away_goal) >= 10)
-- Select league name and count of matches from the CTE
SELECT
    l.name AS league,
    COUNT(match_list.id) AS matches
FROM league AS l
-- Join the CTE to the league table using country_id
LEFT JOIN ___ ON l.id = ___
GROUP BY l.name;
코드 편집 및 실행