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를 기준으로 CTE를 league 테이블에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;