sql - SQL分组不会导致平均
问题描述
我正在尝试在 SQLite 上解决这个练习问题。
找出 1980 年之前发行的电影的平均评分与 1980 年之后发行的电影的平均评分之间的差异。(确保计算每部电影的平均评分,然后计算 1980 年之前和之后电影的平均值。不要t 只计算 1980 年前后的总体平均评分。
数据在这里:
这是我到目前为止得到的(第一组<1980):
select title, avg(stars) from Movie join Rating
on Movie.mID=Rating.mID
where Year<1980
group by title
有人可以提供一个简单的解决方案吗?我不知道如何继续前进。
解决方案
首先,不要按title
. 区分电影的是id,而不是标题(理论上可以重复)。
您可以使用条件聚合:
select m.mID, avg(case when m.year < 1980 then r.stars end) as pre_1980_avg,
avg(case when m.year > 1980 then r.stars end) as post_1980_avg
from Movie m join
Rating r
on m.mID = r.mID
group by m.mID;
推荐阅读
- reactjs - 反应地图没有渲染所有对象
- angular - RxJS - 如何使用 mergemap 或 map 简化 observable 订阅
- python - 登录到控制台时出现python3 UnicodeDecodeError
- linux - Linux(ubuntu)-sed,仅删除文件中的模式匹配
- python-3.x - 从 PKS 文件中获取 python signxml 的证书和密钥
- php - PHP URL隐藏类别的ID
- typescript - 在 TypeScript 中定义类型之间的相等性
- android - Android Gravity Left vs Right Clipping 差异
- python - 如何获取维基项目的维基百科数据?
- html - Favicon error 404 for local and remote, favicon.ico directory automatically generated in git repo