PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres-Aggregatfunktionsaufrufe dürfen nicht verschachtelt werden

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 .

SQLFiddle

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.