SQL查询求助:如何按年份统计2010-2013年电影平均评分?
修正你的电影平均评分查询语句
嘿,你的问题出在子查询没有和外层的年份做关联,而且用DISTINCT完全没必要——你现在的子查询SELECT AVG(score) FROM movie是计算整个movie表所有电影的平均分,不管外层的yr是哪一年,都会返回同一个值。
要按年份计算各自的平均评分,我们需要用GROUP BY子句按年份分组,让数据库对每一年的电影单独计算平均分。修正后的查询语句如下:
SELECT yr, AVG(score) AS avg_score FROM movie WHERE yr BETWEEN 2010 AND 2013 GROUP BY yr ORDER BY yr DESC;
关键说明:
GROUP BY yr:告诉数据库把数据按yr(年份)分组,每一组对应一个年份的所有电影AVG(score):针对每个分组(也就是每一年)计算评分的平均值,这样就能得到对应年份的平均评分了- 去掉了
DISTINCT,因为GROUP BY已经保证每个年份只会出现一次
这样执行后,就能得到2010-2013年每年的平均评分,并且按年份降序排列啦。
内容的提问来源于stack exchange,提问作者Peter97
相关产品推荐
相关产品推荐

