Mysql SQL:如何获取基于第三列值导出的减法平均值

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

我想得到基于第三列值的两个平均值之差

我使用UNION创建了一个由两个表组成的表,一个表包含1980年之前的每部电影的平均AVGSTAR评分,另一个表包含1980年之后的电影

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年时呢??我放在第二部分。 我想你们最后一行是按年订购的;?