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

求评分>3的演员参演电影最大评分差值的SQL查询求助

问题分析与解决方案

你的原SQL逻辑存在核心错误:WHERE子句中用ratings.movie_id(电影ID)去匹配一个评分差值(数值),类型完全不匹配;同时子查询计算的是全局所有评分>3电影的最大最小差,而非每个演员自身参演电影的评分差值,这必然得不到预期结果。

正确SQL写法(支持CTE的数据库,如PostgreSQL、MySQL 8+等)

WITH actor_score_diff AS (
    SELECT 
        s.person_id,
        MAX(r.rating) - MIN(r.rating) AS score_diff
    FROM stars s
    JOIN ratings r ON s.movie_id = r.movie_id
    WHERE r.rating > 3
    GROUP BY s.person_id
)
SELECT person_id, score_diff
FROM actor_score_diff
WHERE score_diff = (SELECT MAX(score_diff) FROM actor_score_diff);

兼容老版本数据库的写法(无CTE支持)

SELECT 
    s.person_id,
    MAX(r.rating) - MIN(r.rating) AS score_diff
FROM stars s
JOIN ratings r ON s.movie_id = r.movie_id
WHERE r.rating > 3
GROUP BY s.person_id
HAVING score_diff = (
    SELECT MAX(score_diff)
    FROM (
        SELECT MAX(r2.rating) - MIN(r2.rating) AS score_diff
        FROM stars s2
        JOIN ratings r2 ON s2.movie_id = r2.movie_id
        WHERE r2.rating > 3
        GROUP BY s2.person_id
    ) AS temp
);

关键逻辑说明

  • 先通过关联stars和ratings表,过滤掉评分≤3的无效记录
  • 按演员ID分组,计算每个演员参演符合条件电影的评分差值(最高评分-最低评分)
  • 最后筛选出差值最大的演员(若有多个演员差值相同且为最大值,会全部返回)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:20:25