Ik ga ervan uit dat je eerst de interne formule voor sommige groepen items moet berekenen en dan de resultaten moet optellen. Ik gebruik product
kolom als een willekeurige keuze voor het groeperen van kolom. Ik heb ook Count
hernoemd naar dcount
.
Voorbeeldgegevens:
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);
Vraag:
select
sum(frequency) as frequency
from
(
select
product,
sum((impressions / dcount::numeric) * volume) / sum(volume) as frequency
from
sample
group by
product
) x;
Het punt is dat je geaggregeerde functies niet kunt nesten. Als u aggregaten moet aggregeren, moet u subquery gebruiken.