PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

chamadas de funções agregadas postgres não podem ser aninhadas


Vou assumir que você precisa calcular a fórmula interna para alguns grupos de itens primeiro e depois somar os resultados. Estou usando product coluna como uma escolha arbitrária para coluna de agrupamento. Eu também renomeei Count para dcount .

SQLFiddle

Dados de amostra:
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);

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

O ponto é que você não pode aninhar funções agregadas. Se você precisar agregar agregados, precisará usar a subconsulta.