ระบุนักแสดงที่ชื่นชอบของกลุ่มลูกค้า

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

Irene Ortner

Data Scientist at Applied Statistics

การรวม SQL หลายคำสั่งในคิวรีเดียว

  • LEFT JOIN
  • WHERE
  • GROUP BY
  • HAVING
  • ORDER BY
การตัดสินใจเชิงข้อมูลด้วย SQL

จากบันทึกการเช่าสู่ข้อมูลลูกค้าและนักแสดง

คำถามของเรา: นักแสดงที่ชื่นชอบของกลุ่มลูกค้าหนึ่งๆ คือใคร?

เชื่อมตาราง renting กับตาราง

  • customers
  • actsin
  • actors
SELECT *
FROM renting as r
LEFT JOIN customers AS c
ON r.customer_id = c.customer_id
LEFT JOIN actsin as ai
ON r.movie_id = ai.movie_id
LEFT JOIN actors as a
ON ai.actor_id = a.actor_id;
การตัดสินใจเชิงข้อมูลด้วย SQL

ลูกค้าเพศชาย

  • นักแสดงที่ปรากฏในภาพยนตร์ที่ลูกค้าเพศชายดูบ่อยที่สุด
SELECT a.name, 
       COUNT(*)
FROM renting as r
LEFT JOIN customers AS c
ON r.customer_id = c.customer_id
LEFT JOIN actsin as ai
ON r.movie_id = ai.movie_id
LEFT JOIN actors as a
ON ai.actor_id = a.actor_id

WHERE c.gender = 'male'
GROUP BY a.name;
การตัดสินใจเชิงข้อมูลด้วย SQL

นักแสดงที่ชื่นชอบคือใคร?

  • นักแสดงที่ถูกดูบ่อยที่สุด
  • คะแนนเฉลี่ยดีที่สุดเมื่อถูกดู
SELECT a.name, 
       COUNT(*) AS number_views, 
       AVG(r.rating) AS avg_rating
FROM renting as r
LEFT JOIN customers AS c
ON r.customer_id = c.customer_id
LEFT JOIN actsin as ai
ON r.movie_id = ai.movie_id
LEFT JOIN actors as a
ON ai.actor_id = a.actor_id

WHERE c.gender = 'male'
GROUP BY a.name;
การตัดสินใจเชิงข้อมูลด้วย SQL

เพิ่ม HAVING และ ORDER BY

SELECT a.name, 
       COUNT(*) AS number_views, 
       AVG(r.rating) AS avg_rating
FROM renting as r
LEFT JOIN customers AS c
ON r.customer_id = c.customer_id
LEFT JOIN actsin as ai
ON r.movie_id = ai.movie_id
LEFT JOIN actors as a
ON ai.actor_id = a.actor_id

WHERE c.gender = 'male'
GROUP BY a.name
HAVING AVG(r.rating) IS NOT NULL
ORDER BY avg_rating DESC, number_views DESC;
การตัดสินใจเชิงข้อมูลด้วย SQL

เพิ่ม HAVING และ ORDER BY

| name               | number_views | avg_rating |
|--------------------|--------------|------------|
| Ray Romano         | 3            | 10.00      |
| Sean Bean          | 2            | 10.00      |
| Leonardo DiCaprio  | 3            | 9.33       |
| Christoph Waltz    | 3            | 9.33       |
การตัดสินใจเชิงข้อมูลด้วย SQL

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

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

Preparing Video For Download...