Menu
Coddy logo textTech

쿼리 간소화, WITH 키워드

Coddy SQL 여정의 기초 섹션에 포함된 레슨. 72개 중 49번째.

여러 개의 내부 쿼리를 추가하면 쿼리가 너무 복잡해질 수 있습니다. 예를 들어 다음은 여러 하위 쿼리가 있는 쿼리입니다:

SELECT * FROM table1
WHERE col2 IN (
	SELECT col1 FROM table2
	WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN (
		SELECT col5 FROM table3
		WHERE col1 AND col3 OR col2
	)
)

더 쉽게 하려면 WITH query_name AS (...) 키워드를 사용할 수 있습니다. 이를 통해 쿼리를 이름과 함께 저장하고 원하는 곳에서 사용할 수 있습니다:

WITH query1 AS (
	SELECT col5 FROM table3
	WHERE col1 AND col3 OR col2
), query2 AS (
	SELECT col1 FROM table2
	WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN query1
)
SELECT * FROM table1
WHERE col2 IN (SELECT col1 FROM query2) AND col4 IN (SELECT col5 FROM query1)

여기서는 query2와 주 쿼리에서 query1을 재사용했습니다.

challenge icon

챌린지

쉬움

사용 가능한 테이블 및 열:

  • devices_specs: device_id, width, height, num_features, opinion
  • devices_score: device_id, score

다음 조건을 충족하는 쿼리를 작성하세요:

  1. 먼저 "large devices"(width가 200보다 큰 장치)를 식별합니다.
  2. 그런 다음 이러한 large devices의 평균 점수를 계산합니다. 이 열의 이름을 average_score로 지정하세요.

이 문제를 해결하려면 WITH 절을 사용하세요.

직접 해보기

-- 1단계: 관심 있는 기기만 유지하는 임시 결과 집합의 이름을 지정합니다
WITH large_devices AS (
    SELECT ____
    FROM devices_specs
    WHERE ____
)
-- 2단계: 메인 쿼리 안에서 그 임시 결과 집합을 재사용합니다
SELECT ____ AS average_score
FROM devices_score
WHERE device_id IN (____);
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨

직접 연습해 보세요: SQL 플레이그라운드