Snowflake에서의 조인

Snowflake SQL 입문

George Boorman

Senior Curriculum Manager, DataCamp

조인(joins)

  • INNER JOIN
  • OUTER JOINS
    • LEFT OUTER JOIN 또는 LEFT JOIN
    • RIGHT OUTER JOIN 또는 RIGHT JOIN
    • FULL OUTER JOIN 또는 FULL JOIN
  • CROSS JOINS
  • SELF JOINS
  • NATURAL JOIN
  • LATERAL JOIN
Snowflake SQL 입문

피자 데이터셋

피자 데이터베이스 스키마 다이어그램

Snowflake SQL 입문

NATURAL JOIN

  • NATURAL JOIN은 동일한 컬럼을 자동 매칭하고 중복 컬럼을 제거합니다.

Syntax:

SELECT ...
FROM <table_one> [
                     {
                       | NATURAL [ { LEFT | RIGHT | FULL } [ OUTER ] ]
                     }
                   ]
                   JOIN <table_two>
[ ... ]
Snowflake SQL 입문

NATURAL JOIN

NATURAL JOIN 없이

SELECT * 
FROM pizzas AS p 
JOIN  pizza_type AS t 
    ON t.pizza_type_id = p.pizza_type_id

natural join 없이 조인 결과

NATURAL JOIN 사용

SELECT *
FROM pizzas AS p 
NATURAL JOIN pizza_type AS t

  natural join 사용 시 조인 결과

Snowflake SQL 입문

NATURAL JOIN

 

허용되지 않음

select *
FROM pizzas AS p 
NATURAL JOIN pizza_type AS t
    ON  t.pizza_type_id = p.pizza_type_id

문법 오류 이미지

Snowflake SQL 입문

NATURAL JOIN

$$

허용됨

  • WHERE
SELECT *
FROM pizzas AS p 
NATURAL JOIN pizza_type AS t
WHERE pizza_type_id = 'bbq_ckn'
Snowflake SQL 입문

LATERAL JOIN

  • LATERAL JOIN: FROM의 하위쿼리가 앞선 테이블/뷰의 컬럼을 참조할 수 있게 합니다.

Syntax:

SELECT ...
FROM <left_hand_expression> , -- 
LATERAL 
(<right_hand_expression>)

  • left_hand_expression - 테이블, 뷰, 또는 서브쿼리

  • right_hand_expression - 인라인 뷰 또는 서브쿼리

Snowflake SQL 입문

하위쿼리와 LATERAL JOIN

SELECT 
    p.pizza_id, 
    lat.name, 
    lat.category 
FROM pizzas AS p,

LATERAL -- 키워드 LATERAL ( SELECT * FROM pizza_type AS t
-- 외부 쿼리 컬럼 참조: p.pizza_type_id WHERE p.pizza_type_id = t.pizza_type_id
) AS lat
Snowflake SQL 입문

왜 LATERAL JOIN인가?

SELECT 
    *
FROM orders AS o,
LATERAL (
   -- total_spent 계산 서브쿼리
    SELECT 
        SUM(p.price * od.quantity) AS total_spent
    FROM order_details AS od
    JOIN pizzas AS p 
          ON od.pizza_id = p.pizza_id
    WHERE o.order_id = od.order_id
) AS t
ORDER BY o.order_id
Snowflake SQL 입문

연습해 봅시다!

Snowflake SQL 입문

Preparing Video For Download...