You need to enable JavaScript to run this app. sqlite3统计2012年IMDB电影平均评分时计算结果异常求助
优惠活动
大模型
产品
解决方案
定价
更多

sqlite3统计2012年IMDB电影平均评分时计算结果异常求助

结果异常的核心原因

你遇到的求和数值失真、平均值计算偏差,根本原因是多表关联做统计时出现了重复行累积,常见的触发情况有两种:

  • 关联条件写错导致笛卡尔积匹配:本来1条MOVIES的记录应该对应1条相同ID的RATINGS记录,因为漏写关联条件、关联字段匹配错误,会让1部2012年的电影被匹配到几十甚至上百条重复的评分数据,最后聚合求和时把同一条rating反复累加,算出来的总和会远高于真实值,得到的平均值自然和预期不符。
  • 计算求和时选错了字段:RATINGS表里的votes字段是对应评分的投票总人数,数值远大于0-10分区间的rating本身,如果误把这个字段和rating加在一起算总和,也会得到明显异常的求和结果。
正确的查询实现

要准确统计2012年上映电影的平均评分,只要严格匹配表间关联关系、明确筛选上映年份的条件即可,参考SQL写法:

SELECT AVG(rating) AS avg_rating_2012
FROM MOVIES
INNER JOIN RATINGS
  ON MOVIES.id = RATINGS.movie_id
WHERE MOVIES.year = 2012;

如果需要核查求和值是否准确,可以替换聚合函数做交叉验证:

SELECT 
  SUM(rating) AS total_rating_sum, 
  COUNT(rating) AS counted_movie_num
FROM MOVIES
INNER JOIN RATINGS
  ON MOVIES.id = RATINGS.movie_id
WHERE MOVIES.year = 2012;

用得到的总评分和除以统计的电影数量,就能和之前算出的平均值做比对,快速排查是不是出现了重复行累积的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 14:54:08