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

如何按电影ID分组计算二次平均评分?

解决方案

要实现你需要的评分计算逻辑,得先通过子查询或CTE算出每位用户对每部电影的平均评分,再基于这个中间结果按电影ID分组计算最终均值。直接在原语句加group by movie_id失败的原因是:原查询的select列表包含person_id这个非聚合字段,分组时数据库无法确定要返回哪个用户ID,不符合分组规则。

方法一:使用子查询

SELECT movie_id, AVG(user_avg_score) AS movie_final_avg
FROM (
    -- 先计算每位用户对每部电影的三维评分平均值
    SELECT person_id, movie_id, ((soundtrack_rate + casting_rate + story_rate) / 3) AS user_avg_score
    FROM ratings
) AS user_movie_scores
GROUP BY movie_id;

方法二:使用CTE(公共表表达式,可读性更强)

WITH user_movie_scores AS (
    SELECT person_id, movie_id, ((soundtrack_rate + casting_rate + story_rate) / 3) AS user_avg_score
    FROM ratings
)
SELECT movie_id, AVG(user_avg_score) AS movie_final_avg
FROM user_movie_scores
GROUP BY movie_id;

针对电影ID 858228的验证

如果该电影有两位用户的user_avg_score分别为1和0.6,上述查询会计算AVG(1, 0.6),结果正好是0.8,符合你的预期。最终结果会按movie_id分组,每部电影只返回一条最终均值记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:15:49