我该如何写一个查询汇总的平均值(另一个平均值)?
这是我到目前为止所拥有的。
SELECT AVG(stars)
FROM Rating
WHERE mID IN
(SELECT mID
FROM Movie
WHERE year > 1980)
GROUP BY mID
我想对该查询的输出求平均值。
基础数据是:
(Stars,mID)
(2,104)
(3,104)
(3,107)
(5,107)
(4,108)
(2,108)
(4,108)
我可以通过上述查询获得按mID分组的平均值。
[AVG(stars),mID]
(2.50,104)
(4.00,107)
(3.33,108)
现在我要平均(2.5 + 4.0 + 3.33)
预期答案= 3.2767
答案 0 :(得分:1)
您可以获得以下所有评分的总体平均值:
SELECT AVG(stars)
FROM Rating
WHERE mID IN (SELECT mID FROM Movie WHERE year > 1980);
但是您可能希望每部电影都具有相同的权重。为此,我们需要一个子查询:
SELECT AVG(avg_stars)
FROM (SELECT AVG(stars) as avg_stars
FROM Rating
WHERE mID IN (SELECT mID FROM Movie WHERE year > 1980);
GROUP BY mID
) r;
答案 1 :(得分:0)
您可以将第一个resul用作主avg的FROM(子查询)
select avg(my_avg)
from (
SELECT AVG(stars) my_avg
FROM Rating r
INNER JOIN (
SELECT mID
FROM Movie
WHERE year > 1980
) t on t.mID = r.mID
GROUP BY mID
) t2