sql >> Databáze >  >> RDS >> PostgreSQL

volání agregačních funkcí postgres nemusí být vnořeno

Předpokládám, že je třeba nejprve vypočítat vnitřní vzorec pro některé skupiny položek a poté sečíst výsledky. Používám product sloupec jako libovolná volba pro seskupení sloupců. Také jsem přejmenoval Count na dcount .

SQLFiddle

Ukázková data:

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);

Dotaz:

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

Jde o to, že nemůžete vnořit agregační funkce. Pokud potřebujete agregovat agregáty, musíte použít poddotaz.




  1. Jak formátovat měsíc v římských číslicích v Oracle

  2. Získávání dat z uložené procedury pomocí Entity Framework

  3. Použití relačních databází MySQL na Arch Linuxu

  4. Jak změním výchozí hodnoty sloupců tabulky mysql?