Mysql SQL:如何获取基于第三列值导出的减法平均值
我想得到基于第三列值的两个平均值之差 我使用UNION创建了一个由两个表组成的表,一个表包含1980年之前的每部电影的平均AVGSTAR评分,另一个表包含1980年之后的电影Mysql SQL:如何获取基于第三列值导出的减法平均值,mysql,union,Mysql,Union,我想得到基于第三列值的两个平均值之差 我使用UNION创建了一个由两个表组成的表,一个表包含1980年之前的每部电影的平均AVGSTAR评分,另一个表包含1980年之后的电影 title avgstars year m1 3 pre1980 m2 4.5 pre1980 m3 2.5 pre1980 m4 4 post1980 m5 2.5 post
title avgstars year
m1 3 pre1980
m2 4.5 pre1980
m3 2.5 pre1980
m4 4 post1980
m5 2.5 post1980
m6 3.333 post1980
如何从1980年前的值3.333-3.277中减去1980年后的值
我在下面编写的代码返回:
year avg(foo.avgstars)
pre1980 3.33333333
post1980 3.27776667
SELECT year, AVG(foo.avgstars)
FROM
(SELECT title, AVG(stars) AS avgstars, 'pre1980' AS year
FROM Movie JOIN Rating USING (mID)
WHERE year < 1980
GROUP BY title
UNION
SELECT title, AVG(stars) AS avgstars, 'post1980' AS year
FROM Movie JOIN Rating USING (mID)
WHERE year > 1980
GROUP BY title) AS foo
GROUP BY year DESC;
[注:我从一个表格开始,表格中有许多重复的标题,每个标题都有不同的评级星级和年份]。根据平均值使用条件,如果不匹配,将返回NULL,并且不会作为计算的一部分
SELECT AVG( CASE WHEN year < 1980 THEN foo.avgstars END)
- AVG( CASE WHEN year >= 1980 THEN foo.avgstars END)
FROM Movie JOIN Rating USING (mID)
那么当年份=1980年时呢??我放在第二部分。
我想你们最后一行是按年订购的;?