Snowflake SQL 입문
George Boorman
Senior Curriculum Manager, DataCamp
FROM, WHERE, HAVING, SELECT 절에서 사용SELECT column1
FROM table1
WHERE column1 = (SELECT column2 FROM table2 WHERE condition)
-- 서브쿼리에서 찾은 최대 가격과 같은 피자를 반환하는 메인 쿼리
SELECT pizza_id
FROM pizzas
-- 가장 높은 피자 가격을 구하는 비상관 서브쿼리
WHERE price = (
SELECT MAX(price)
FROM pizzas
)
SELECT pt.name,
pz.price,
pt.category
FROM pizzas AS pz
JOIN pizza_type AS pt
ON pz.pizza_type_id = pt.pizza_type_id
WHERE pz.price = (
-- 카테고리별 최대 가격 식별
SELECT MAX(p2.price) -- 최대 가격
FROM pizzas AS p2
WHERE -- 상관: 외부 쿼리 컬럼 사용
p2.pizza_type_id = pz.pizza_type_id
)
일반 문법:
-- WITH 키워드
WITH cte1 AS ( -- CTE 이름
SELECT col_1, col_2
FROM table1
)
...
SELECT ...
FROM cte1 -- CTE 조회
;
WITH max_price AS ( -- max_price 라는 CTE SELECT pizza_type_id, MAX(price) AS max_price FROM pizzas GROUP BY pizza_type_id )-- 메인 쿼리 SELECT pt.name, pz.price, pt.category FROM pizzas AS pz JOIN pizza_type AS pt ON pz.pizza_type_id = pt.pizza_type_id JOIN max_price AS mp -- CTE max_price 조인 ON pt.pizza_type_id = mp.pizza_type_id WHERE pz.price < mp.max_price -- CTE 컬럼 max_price와 비교
-- 여러 CTE를 콤마로 구분해 정의 WITH cte1 AS ( SELECT ... FROM ... ),cte2 AS ( SELECT ... FROM ... )-- 두 CTE를 결합하는 메인 쿼리 SELECT ... FROM cte1 JOIN cte2 ON ... WHERE ...
Snowflake SQL 입문