11

我正在尝试使用嵌套聚合函数和分组来获得总和的平均值。我想做的是:

SELECT AVG(SUM(x) GROUP BY y) WHERE ... GROUP BY ...;

也就是说,对于返回的每一行,我希望其中一个字段是总和的平均值,其中每个总和都超过 y 相同的行。

如果可能,我想避免子选择。

4

2 回答 2

23

你需要一个子查询:

select z, avg(sumval)
from (select y, z, sum(x) as sumval
      from t
      group by y, z
     ) t
group by z
于 2012-06-19T19:08:58.657 回答
0

您还可以为此使用公用表表达式 (CTE)

WITH tmp AS (
    SELECT y, z, sum(x) as sumval
    FROM t
    GROUP BY y, z
)
SELECT z, avg(sumval)
FROM tmp
GROUP BY z
于 2021-10-13T12:33:42.567 回答