如何按男女客户分组统计每位演员的租赁量与平均评分
分性别客户维度演员租赁统计SQL实现
任务要求
- 拆分男性、女性客户两个维度,分别统计每位演员对应的电影租赁总次数、客户给出的平均评分
- 仅返回租赁次数超过5次的演员统计结果
- 依赖表:
renting(租赁记录表)、customers(客户信息表)、actors(演员信息表)、actsin(演员-影片关联中间表)
表关联逻辑
四表关联全程用内连接过滤无效匹配数据,链路如下:
- 租赁表
renting通过customer_id关联客户表customers,获取客户性别字段 - 租赁表
renting通过movie_id关联中间表actsin,匹配影片对应的所有演员 - 中间表
actsin通过actor_id关联演员表actors,获取演员姓名等基础信息
最终可运行SQL
SELECT c.gender AS customer_gender, a.actor_id, a.actor_name, COUNT(r.rent_id) AS total_rent_count, ROUND(AVG(r.rating), 2) AS avg_rating FROM renting r INNER JOIN customers c ON r.customer_id = c.customer_id INNER JOIN actsin ai ON r.movie_id = ai.movie_id INNER JOIN actors a ON ai.actor_id = a.actor_id WHERE r.rating IS NOT NULL -- 过滤未评分的无效租赁记录,可根据实际业务需求调整 GROUP BY c.gender, a.actor_id, a.actor_name HAVING total_rent_count > 5 ORDER BY c.gender, total_rent_count DESC;
关键语法说明
- 分组字段必须同时包含客户性别、演员唯一ID、演员姓名,避免同名演员数据合并统计错误
- 租赁次数的聚合过滤条件必须写在
HAVING子句中,WHERE子句在分组聚合前执行,无法识别聚合计算生成的次数字段 - 平均评分用
ROUND()保留2位小数,符合日常统计的可读性要求 - 内连接会自动剔除无匹配客户、无匹配演员信息的异常租赁数据,保证统计结果准确性
内容的提问来源于stack exchange,提问作者plarppkgnfzplixwcj
相关产品推荐
相关产品推荐

