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: 同一値のデータを集計するSQL句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で学ぶデータモデリング入門