Identifier les acteurs préférés des groupes de clients

Prise de décision basée sur des données en SQL

Irene Ortner

Data Scientist at Applied Statistics

Combiner des instructions SQL dans une seule requête

  • LEFT JOIN
  • WHERE
  • GROUP BY
  • HAVING
  • ORDER BY
Prise de décision basée sur des données en SQL

Des enregistrements de location aux informations sur les clients et les acteurs

Notre question : Quel est l'acteur préféré d'un certain groupe de clients ?

Joindre la table renting avec des tables

  • 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;
Prise de décision basée sur des données en SQL

Clients masculins

  • Acteurs qui apparaissent le plus souvent dans les films regardés par une clientèle masculine.
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;
Prise de décision basée sur des données en SQL

Qui est l'acteur préféré ?

  • Acteur le plus souvent regardé.
  • Meilleure évaluation moyenne lors du visionnage.
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;
Prise de décision basée sur des données en SQL

Ajouter HAVING et 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;
Prise de décision basée sur des données en SQL

Ajouter HAVING et 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       |
Prise de décision basée sur des données en SQL

Passons à la pratique !

Prise de décision basée sur des données en SQL

Preparing Video For Download...