gpt4 book ai didi

mysql - SQL : How to get subtract AVGs derived based on value of third column

转载 作者:行者123 更新时间:2023-11-29 02:18:26 25 4
gpt4 key购买 nike

我想根据第三列的值得到两个平均值的差值。

我使用 UNION 从两个表中创建了一个表,一个是 1980 年之前的每部电影(片名)的平均评分(avgstars),另一个是 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;

[注意:我从一个包含许多重复标题的表格开始,每个标题都有不同的评级(星级)和年份]。

最佳答案

在 AVG 上使用条件,如果不匹配将返回 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)
  • year = 1980 呢?我放了第二部分。

关于mysql - SQL : How to get subtract AVGs derived based on value of third column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35585786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com