我正在尝试使用嵌套聚合函数和分组来获得总和的平均值。我想做的是:
SELECT AVG(SUM(x) GROUP BY y) WHERE ... GROUP BY ...;
也就是说,对于返回的每一行,我希望其中一个字段是总和的平均值,其中每个总和都超过 y 相同的行。
如果可能,我想避免子选择。
我正在尝试使用嵌套聚合函数和分组来获得总和的平均值。我想做的是:
SELECT AVG(SUM(x) GROUP BY y) WHERE ... GROUP BY ...;
也就是说,对于返回的每一行,我希望其中一个字段是总和的平均值,其中每个总和都超过 y 相同的行。
如果可能,我想避免子选择。
你需要一个子查询:
select z, avg(sumval)
from (select y, z, sum(x) as sumval
from t
group by y, z
) t
group by z
您还可以为此使用公用表表达式 (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