2014-06-05 121 views
1

我有一個查詢:Postgres的聚合函數調用不能嵌套

select sum(
     sum((Impressions/Count) * Volume)/sum(Volume) 
    ) as frequency 
    from datatable; 

但是我不能在Postgres的,因爲它使用嵌套聚合執行此。有沒有另一種方式來寫這不使用嵌套聚合?

+0

您認爲這意味着什麼?你能舉一些例子數據/結果嗎? –

+0

你認爲外部和()有什麼作用?似乎術語和((印象/計數)*音量)/和(音量)應該只有一個值,所以我不知道外部和()可以做什麼。 –

+0

請定義「this」。你目前顯示的內容沒有意義。從表格定義(psql中的'\ d tbl')和您的Postgres版本開始。添加你想要實現的內容的解釋。 –

回答

3

我會假設你需要先計算一些項目組的內部公式,然後再計算總和結果。我使用product列作爲分組列的任意選擇。我也將其更名爲Countdcount

SQLFiddle

的樣本數據:

create table sample (
    product varchar, 
    dcount int, 
    impressions int, 
    volume int 
); 

insert into sample values ('a', 100, 10, 50); 
insert into sample values ('a', 100, 20, 40); 
insert into sample values ('b', 100, 30, 30); 
insert into sample values ('b', 100, 40, 30); 
insert into sample values ('c', 100, 50, 10); 
insert into sample values ('c', 100, 60, 100); 

查詢:

select 
    sum(frequency) as frequency 
from 
    (
    select 
    product, 
    sum((impressions/dcount::numeric) * volume)/sum(volume) as frequency 
    from 
    sample 
    group by 
    product 
) x; 

的一點是,你不能嵌套聚合函數。如果您需要聚合聚合比您需要使用子查詢。