我有一个问题:
select sum(
sum((Impressions / Count) * Volume) / sum(Volume)
) as frequency
from datatable;
然而我无法在postgres中执行此操作,因为它使用嵌套聚合。有没有其他方法可以在不使用嵌套聚合的情况下编写它?
答案 0 :(得分:4)
我假设您需要先计算某些项目组的内部公式,然后再计算结果。我使用product
列作为分组列的任意选择。我还将Count
重命名为dcount
。
示例数据:
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;
关键是你不能嵌套聚合函数。如果需要聚合聚合,则需要使用子查询。