2012-06-19 88 views
7

我試圖使用嵌套的聚合函數和分組獲得平均和。我希望做的是:在postgresql中使用分組的嵌套聚合函數

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

也就是說,返回的每個行,我想其中一個字段是一個平均總和,其中每個總和超過其中y是相同的行。

如果可能,我想避免子查詢。

+0

「*我想如果可能的話*避免子查詢」。爲什麼? –

回答

12

你需要一個子查詢:

select z, avg(sumval) 
from (select y, z, sum(x) as sumval 
     from t 
     group by y, z 
    ) t 
group by z 
+0

但是對於返回的每一行,我得到不同的z值和相同的平均值。這不是我想要的行爲;對於每個z值,我想得到特定於該z值的相應的總和的平均值。例如,如果我的數據是 'XYZ 10 AG 15 AG 7 BG 8啊 12 BH 18 bh' 我期望已返回 'Z,平均 克16 H 19 ' – ferson2020

+0

我的原始SQL在語法上不正確。它應該在內部子查詢中具有「z」作爲分組變量。我只是修正了這一點。 –

+0

感謝您的幫助。 – ferson2020