1. 학습
  2. /
  3. 강의
  4. /
  5. SQL에서의 데이터 조작

Connected

연습 문제

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를 사용해 비슷한 쿼리를 다시 작성해 보겠습니다.

지침

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