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

编写SQL查询报错求助:统计1991-2001年演员参演电影数最值

解决1991-2001年演员参演电影数量统计问题

步骤1:计算每位演员的参演电影数量

先关联演员与电影相关表,筛选出1991至2001年间的电影,再按演员分组统计参演数量。假设你的表结构为:

  • actors:含actor_id(演员ID)、actor_name(演员姓名)
  • movies:含movie_id(电影ID)、release_year(上映年份)
  • actor_movie:含actor_id、movie_id(关联演员与电影)

基础统计查询语句:

SELECT 
    a.actor_id,
    a.actor_name,
    COUNT(am.movie_id) AS movie_count
FROM actors a
JOIN actor_movie am ON a.actor_id = am.actor_id
JOIN movies m ON am.movie_id = m.movie_id
WHERE m.release_year BETWEEN 1991 AND 2001
GROUP BY a.actor_id, a.actor_name;

步骤2:统计参演数量的全局最大值与最小值

如果需要同时输出每位演员的参演数,以及所有演员中的最大、最小值,可使用窗口函数实现:

WITH actor_movie_counts AS (
    SELECT 
        a.actor_id,
        a.actor_name,
        COUNT(am.movie_id) AS movie_count
    FROM actors a
    JOIN actor_movie am ON a.actor_id = am.actor_id
    JOIN movies m ON am.movie_id = m.movie_id
    WHERE m.release_year BETWEEN 1991 AND 2001
    GROUP BY a.actor_id, a.actor_name
)
SELECT 
    actor_id,
    actor_name,
    movie_count,
    MAX(movie_count) OVER () AS max_movie_count,
    MIN(movie_count) OVER () AS min_movie_count
FROM actor_movie_counts
ORDER BY movie_count DESC;

常见错误排查

如果你的查询报错,大概率是以下原因:

  • 分组字段不完整:使用GROUP BY时,所有非聚合字段必须包含在分组列表中(比如只分组actor_id却选择actor_name,部分数据库会报错)
  • 表关联逻辑错误:未正确关联演员、电影和关联表,导致数据重复或缺失
  • 筛选条件位置错误:把年份筛选放在HAVING而非WHERE子句,会导致统计范围偏离需求
  • 聚合函数嵌套错误:直接写MAX(COUNT(...))这类嵌套,需先分组统计再计算全局极值

期望结果样式示例

actor_idactor_namemovie_countmax_movie_countmin_movie_count
1Tom Hanks12121
2Julia Roberts10121
...............

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:05:19