Nhập môn Snowflake SQL
George Boorman
Senior Curriculum Manager, DataCamp
FROM, WHERE, HAVING hoặc SELECTSELECT column1
FROM table1
WHERE column1 = (SELECT column2 FROM table2 WHERE condition)
-- Truy vấn chính trả về pizza có giá bằng giá tối đa từ truy vấn con
SELECT pizza_id
FROM pizzas
-- Truy vấn con không tương quan xác định giá pizza cao nhất
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 = (
-- Xác định giá tối đa cho mỗi danh mục pizza
SELECT MAX(p2.price) -- Giá tối đa
FROM pizzas AS p2
WHERE -- Tương quan: dùng cột của truy vấn ngoài
p2.pizza_type_id = pz.pizza_type_id
)
Cú pháp chung:
-- Từ khóa WITH
WITH cte1 AS ( -- Tên CTE
SELECT col_1, col_2
FROM table1
)
...
SELECT ...
FROM cte1 -- Truy vấn CTE
;
WITH max_price AS ( -- CTE tên max_price SELECT pizza_type_id, MAX(price) AS max_price FROM pizzas GROUP BY pizza_type_id )-- Truy vấn chính 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 -- Join với CTE max_price ON pt.pizza_type_id = mp.pizza_type_id WHERE pz.price < mp.max_price -- So sánh giá với cột max_price của CTE
-- Định nghĩa nhiều CTE, phân tách bằng dấu phẩy WITH cte1 AS ( SELECT ... FROM ... ),cte2 AS ( SELECT ... FROM ... )-- Truy vấn chính kết hợp cả hai CTE SELECT ... FROM cte1 JOIN cte2 ON ... WHERE ...
Nhập môn Snowflake SQL