ตัวอย่างสุดท้าย

การตัดสินใจเชิงข้อมูลด้วย SQL

Tim Verdonck

Professor Statistics and Data Science

กรณีทางธุรกิจ

  • MovieNow กำลังพิจารณาลงทุนในภาพยนตร์เรื่องใหม่
  • การนำเสนอภาพยนตร์ที่ผลิตล่าสุดมีต้นทุนสูงกว่าภาพยนตร์เก่า
  • ขั้นตอนแรกของการวิเคราะห์ข้อมูล:
    • ลูกค้าให้คะแนนภาพยนตร์ที่ผลิตล่าสุดดีกว่าภาพยนตร์เก่าหรือไม่?
    • มีความแตกต่างระหว่างประเทศหรือไม่?
การตัดสินใจเชิงข้อมูลด้วย SQL

1. รวมข้อมูล

  • ข้อมูลที่ต้องการ:
    • renting บันทึกการเช่าภาพยนตร์พร้อมคะแนน
    • customers ข้อมูลประเทศของลูกค้า
    • movies ปีที่ออกฉายของภาพยนตร์
      SELECT *
      FROM renting AS r
      LEFT JOIN customers AS c
      ON c.customer_id = r.customer_id
      LEFT JOIN movies AS m
      ON m.movie_id = r.movie_id;
      
การตัดสินใจเชิงข้อมูลด้วย SQL

2. เลือกบันทึกที่เกี่ยวข้อง

  • ใช้เฉพาะภาพยนตร์ที่มีคะแนนอย่างน้อย 4 รายการ
  • ใช้เฉพาะรายการเช่าตั้งแต่วันที่ 2018-04-01
SELECT *
FROM renting AS r
LEFT JOIN customers AS c
ON c.customer_id = r.customer_id
LEFT JOIN movies AS m
ON m.movie_id = r.movie_id
WHERE r.movie_id IN (
    SELECT movie_id
    FROM renting
    GROUP BY movie_id
    HAVING COUNT(rating) >= 4)
AND r.date_renting >= '2018-04-01';
การตัดสินใจเชิงข้อมูลด้วย SQL

3. การรวมค่า

ประเภทของการรวมค่า:

  • นับจำนวนการเช่าภาพยนตร์
  • นับจำนวนภาพยนตร์ที่แตกต่างกัน
  • คำนวณค่าเฉลี่ยคะแนน

ระดับของการรวมค่า:

  • รวมค่าทั้งหมด
  • แยกตามปีที่ออกฉาย
  • แยกตามปีที่ออกฉายและประเทศของลูกค้า
การตัดสินใจเชิงข้อมูลด้วย SQL

3. การรวมค่า

SELECT c.country,
       m.year_of_release,
       COUNT(*) AS n_rentals,
       COUNT(DISTINCT r.movie_id) AS n_movies,
       AVG(rating) AS avg_rating
FROM renting AS r
LEFT JOIN customers AS c
ON c.customer_id = r.customer_id
LEFT JOIN movies AS m
ON m.movie_id = r.movie_id
WHERE r.movie_id IN (
    SELECT movie_id
    FROM renting
    GROUP BY movie_id
    HAVING COUNT(rating) >= 4)
AND r.date_renting >= '2018-04-01'
GROUP BY ROLLUP (m.year_of_release, c.country)
ORDER BY c.country, m.year_of_release;
การตัดสินใจเชิงข้อมูลด้วย SQL

ตารางผลลัพธ์

| year_of_release | country | n_rentals | n_movies | avg_rating         |
|-----------------|---------|-----------|----------|--------------------|
| 2009            | null    | 10        | 1        | 8.7500000000000000 | 
| 2010            | null    | 41        | 5        | 7.9629629629629630 | 
| 2011            | null    | 14        | 2        | 8.2222222222222222 | 
| 2012            | null    | 28        | 5        | 8.1111111111111111 | 
| 2013            | null    | 10        | 2        | 7.6000000000000000 | 
| 2014            | null    | 5         | 1        | 8.0000000000000000 | 
| null            | null    | 333       | 50       | 7.9024390243902439 |
การตัดสินใจเชิงข้อมูลด้วย SQL

มาฝึกกันเถอะ!

การตัดสินใจเชิงข้อมูลด้วย SQL

Preparing Video For Download...