Common Table Expressions
Pissa บริษัทที่คุณเป็นที่ปรึกษาอยู่ กำลังวางแผนจัดแคมเปญโปรโมชัน และต้องการความเชี่ยวชาญของคุณ
แคมเปญนี้มีเป้าหมายเพื่อเน้นพิซซ่าที่ได้รับความนิยมสูงสุดโดยพิจารณาจากยอดสั่งซื้อรวม
นอกจากนี้ยังพิจารณาเปิดตัวเมนูคุ้มค่าที่นำเสนอพิซซ่าราคาประหยัดที่สุดด้วย
หน้าที่ของคุณในฐานะวิศวกรข้อมูลที่ปรึกษาคือระบุพิซซ่าทั้งสองรายการนี้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Snowflake SQL เบื้องต้น
คำแนะนำการฝึกหัด
- สร้าง CTE ชื่อ
most_orderedและจำกัดผลลัพธ์ให้เหลือ1รายการ - สร้าง CTE อีกอันชื่อ
cheapest_pizzaและกรองหาพิซซ่าราคาถูกที่สุดโดยใช้ subquery เพื่อค้นหาราคาต่ำสุด - เขียนคิวรีให้สมบูรณ์โดย SELECT
pizza_idและtotal_qtyที่ตั้ง alias ว่าmetricจาก CTEmost_ordered - เพิ่ม
pizza_idและpriceที่ตั้ง alias ว่าmetricจาก CTEcheapest_pizzaโดยรักษาลำดับของคอลัมน์ไว้ตามเดิม
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- Create a CTE named most_ordered and limit the results
___ ___ ___ (
SELECT pizza_id, SUM(quantity) AS total_qty
FROM order_details GROUP BY pizza_id ORDER BY total_qty DESC
___
)
-- Create CTE cheapest_pizza where price is equal to min price from pizzas table
, ___ ___ (
SELECT pizza_id, price
FROM pizzas
WHERE price = (SELECT ___(price) FROM pizzas)
LIMIT 1
)
SELECT pizza_id, 'Most Ordered' AS Description, total_qty AS metric
-- Select from the most_ordered CTE
FROM ___
UNION ALL
SELECT pizza_id, 'Cheapest' AS Description, price AS metric
-- Select from the cheapest_pizza CTE
FROM ___