You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL统计问题:如何按电影分别统计对应角色数量

按电影统计角色数量的解决方法

你需要用GROUP BY子句按电影的唯一标识分组,这样COUNT函数就会针对每一部电影单独统计角色数量,而不是计算所有角色的总数。

假设你的电影表名为movies(字段:movie_id、movie_name),角色表名为roles(字段:movie_id、role),以下是两种常用的SQL写法:

1. 只统计有角色的电影

如果只需要显示存在角色的电影,用内关联(JOIN):

SELECT 
    m.movie_id,
    m.movie_name,
    COUNT(r.role) AS role_count
FROM movies m
JOIN roles r ON m.movie_id = r.movie_id
GROUP BY m.movie_id, m.movie_name;

2. 统计所有电影(含无角色的电影,角色数显示0)

如果要包含没有角色的电影,用左关联(LEFT JOIN):

SELECT 
    m.movie_id,
    m.movie_name,
    COUNT(r.role) AS role_count
FROM movies m
LEFT JOIN roles r ON m.movie_id = r.movie_id
GROUP BY m.movie_id, m.movie_name;

关键说明

你之前得到总数是因为没加GROUP BY,此时COUNT会把所有关联后的行当成一组计算总数。加上GROUP BY m.movie_id, m.movie_name后,数据库会将相同movie_id的记录归为一组,每组单独统计角色数量。

如果role字段可能存在空值,改用COUNT(*)会更准确(它会统计所有关联行,包括空值):

COUNT(*) AS role_count

内容的提问来源于stack exchange,提问作者user18514662

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 19:10:35