Snowflake로 시작하는 데이터 모델링
Nuno Rocha
Director of Engineering








SELECT
hs.student_key,
ss.student_name
FROM hub_students AS hs
JOIN sat_student AS ss ON hs.student_key = ss.student_key;
LEFT JOIN ON: 키를 기준으로 왼쪽 엔터티의 모든 행과 오른쪽 테이블의 일치 행을 결합하는 SQL 절SELECT
hs.student_key,
ss.student_name
FROM hub_students AS hs
JOIN sat_student AS ss ON hs.student_key = ss.student_key
LEFT JOIN link_enrollment AS le ON hs.student_key = le.student_key
COUNT: 그룹 내 항목 수를 반환하는 집계 함수GROUP BY: 동일 값 기준으로 데이터를 집계하는 절SELECT
hs.student_key,
ss.student_name,
COUNT(le.class_key) AS NumberOfEnrollments
FROM hub_students AS hs
JOIN sat_student AS ss ON hs.student_key = ss.student_key
LEFT JOIN link_enrollment AS le ON hs.student_key = le.student_key
GROUP BY hs.student_key,
ss.student_name
MAX: 한 속성의 값 집합에서 최댓값을 찾는 집계 함수SELECT
hs.student_key,
ss.student_name,
COUNT(le.class_key) AS NumberOfEnrollments
MAX(sc.load_date) AS MostRecentEnrollmentDate
FROM hub_students hs
JOIN sat_student ss ON hs.student_key = ss.student_key
LEFT JOIN link_enrollment le ON hs.student_key = le.student_key
LEFT JOIN sat_class sc ON le.class_key = sc.class_key
GROUP BY hs.student_key,
ss.student_name;
SELECT FROM: 엔터티에서 열을 가져오는 명령JOIN ON: 관련 속성을 기준으로 엔터티 행을 결합LEFT JOIN ON: 키 기준으로 왼쪽 엔터티의 모든 행과 오른쪽 테이블의 일치 행을 결합. 일치가 없으면 오른쪽 속성은 비어 있음COUNT: 그룹 내 항목 수를 반환하는 집계 함수MAX: 한 속성의 값 집합에서 최댓값을 찾는 집계 함수GROUP BY: 동일 값 기준으로 데이터를 집계하는 절SELECT column_name,
COUNT(another_column) AS alias_name,
MAX(other_column) AS alias_name
FROM table_name table_alias
-- 키 기준으로 엔터티 병합
JOIN other_table AS other_alias
ON table_alias.FK = other_alias.PK
LEFT JOIN another_table AS another_alias
ON table_alias.FK = other_alias.PK
-- 특정 열로 데이터 집계
GROUP BY column_name;
Snowflake로 시작하는 데이터 모델링