Ich gehe davon aus, dass Sie zuerst die innere Formel für einige Gruppen von Elementen berechnen und dann die Ergebnisse summieren müssen. Ich verwende product
Spalte als willkürliche Wahl für die Gruppierungsspalte. Ich habe auch Count
umbenannt zu dcount
.
Beispieldaten:
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);
Abfrage:
select
sum(frequency) as frequency
from
(
select
product,
sum((impressions / dcount::numeric) * volume) / sum(volume) as frequency
from
sample
group by
product
) x;
Der Punkt ist, dass Sie Aggregatfunktionen nicht verschachteln können. Wenn Sie Aggregate aggregieren müssen, müssen Sie die Unterabfrage verwenden.