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

为何SQLite3计算2012年电影AVG/COUNT/SUM无有效结果?

解决2012年电影平均评分计算返回空的问题

问题根源

你原来的查询用了movie_id = (SELECT id FROM movies WHERE year = 2012),但子查询返回的是2012年所有电影的ID(多个值),而=运算符只能匹配单个值,这就导致WHERE条件完全不生效,没有任何评分数据被筛选出来,所以AVG结果为空、COUNT返回0。

解决方案

以下两种方法都能正确忽略无评分的电影,计算2012年有评分电影的平均评分:

方法1:用IN替代=

把=改成IN,让movie_id匹配子查询返回的所有2012年电影ID,自动忽略ratings表中不存在的(无评分)电影:

SELECT AVG(rating) FROM ratings 
WHERE movie_id IN (SELECT id FROM movies WHERE year = 2012);

方法2:使用INNER JOIN关联表(更直观)

通过INNER JOIN关联movies和ratings表,只保留两边都有数据的记录(即有评分的2012年电影),再计算平均:

SELECT AVG(r.rating) 
FROM movies m
INNER JOIN ratings r ON m.id = r.movie_id
WHERE m.year = 2012;

说明

两种方法的核心都是只统计在ratings表中有记录的2012年电影:

  • 方法1利用IN匹配多个ID,ratings表中没有的电影ID不会被选中;
  • 方法2的INNER JOIN直接过滤掉无评分的电影,只保留有评分的记录进行计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:21:29