sql >> Database teknologi >  >> RDS >> PostgreSQL

postgres samlede funktionskald må ikke indlejres

Jeg vil antage, at du først skal beregne den indre formel for nogle grupper af elementer og derefter summere resultaterne. Jeg bruger product kolonne som et vilkårligt valg til gruppering af kolonne. Jeg omdøbte også Count til dcount .

SQLFiddle

Eksempeldata:

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

Forespørgsel:

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

Pointen er, at du ikke kan indlejre aggregerede funktioner. Hvis du har brug for at samle aggregater, skal du bruge underforespørgsel.




  1. Codeigniter-model med flere opdateringsbetingelser ved hjælp af manual where-erklæring

  2. Slut dig til to tabeller med alle poster

  3. Udskiftning af System.Data.OracleClient til Oracle.DataAccess (ODP.NET)

  4. PostgreSQL:returner besked efter optælling =0