เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

อัลบั้มที่ขับเคลื่อนยอดขาย

วันนี้ผู้อำนวยการของคุณเดินมาที่โต๊ะทำงานและบอกข้อมูลภายในเกี่ยวกับโปรโมชันช่วงวันหยุดสำหรับอัลบั้ม "Greatest Hits" ที่กำลังจะมาถึง อย่างไรก็ตาม เพื่อให้แน่ใจว่าเลือกอัลบั้มที่เหมาะสมที่สุดมาลดราคา เธอต้องการทราบว่าอัลบั้ม "Greatest Hits" ใดที่สร้างยอดขายได้มากที่สุด ถึงเวลาแล้วที่จะนำทักษะทั้งหมดที่เรียนมาใช้งานจริง!

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การจัดการข้อมูลใน Snowflake

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนด CTE ชื่อ album_map
  • สร้างคำสั่ง CASE ที่คืนค่า TRUE หากชื่ออัลบั้มมีคำว่า greatest และคืนค่า FALSE ในกรณีอื่น โดยตั้ง alias เป็น is_greatest_hits
  • อัปเดต CTE trimmed_invoicelines โดย LEFT JOIN ตาราง invoice และ tracks เข้ากับตาราง invoicelines ผ่าน invoice_id และ track_id ตามลำดับ
  • ใช้ subquery เพื่อกรองเฉพาะอัลบั้ม "Greatest Hits"

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

-- Define an album_map CTE to combine albums and artists
___ (
    SELECT
        album.album_id, album.title AS album_name, artist.name AS artist_name,
  		-- Determine if an album is a "Greatest Hits" album
        ___ 
            ___ album_name ILIKE '%greatest%' ___ TRUE
            ELSE FALSE
        ___ AS ___
    FROM store.album
    JOIN store.artist ON album.artist_id = artist.artist_id
), trimmed_invoicelines (
    SELECT
        invoiceline.invoice_id, track.album_id, invoice.total
    FROM store.invoiceline
    LEFT JOIN store.invoice ON invoiceline.invoice_id = invoice.invoice_id
    LEFT JOIN store.track ON invoiceline.track_id = track.track_id
)

SELECT
    album_map.album_name,
    album_map.artist_name,
    SUM(ti.total) AS total_sales_driven
FROM trimmed_invoicelines AS ti
JOIN album_map ON ti.album_id = album_map.album_id
-- Use a subquery to only "Greatest Hits" records
___ ti.___ ___ (SELECT album_id FROM album_map WHERE is_greatest_hits)
GROUP BY album_map.album_name, album_map.artist_name, is_greatest_hits
ORDER BY total_sales_driven DESC;
แก้ไขและรันโค้ด