중첩 서브쿼리를 활용한 CTE
여러 개의 서브쿼리를 중첩 구문과 함께 FROM 절에 나열하게 되면, 쿼리가 길고 복잡해져 읽기 어려워질 가능성이 높습니다.
많은 쿼리는 나중에 저장하고 다시 실행할 목적으로 작성되기 때문에, 적절한 구성이 원활한 워크플로의 핵심입니다. 서브쿼리를 CTE로 정리하면 장기적으로 시간, 공간, 혼란을 줄일 수 있습니다!
이 연습은 강의의 일부입니다
SQL 데이터 조작
연습 안내
'2013/2014'시즌의 8월 경기에서의 전체 득점 수를 계산하는 CTE를 선언하세요.- 내부 서브쿼리에서
'2013/2014'시즌 8월 경기만 선택하도록 필터링하세요. match_listCTE의country_id를 사용하여 CTE를 league 테이블에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;