sql >> Database >  >> RDS >> PostgreSQL

postgres geaggregeerde functie-aanroepen mogen niet worden genest

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 .

SQLFiddle

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.




  1. Update SQL Server-statistieken met behulp van een database-onderhoudsplan

  2. Kan grote tekst niet opslaan in mysql via php

  3. Blob (Oracle)-retouren maken Methode wordt niet geïmplementeerd door JDBC-stuurprogramma (Jboss eap 5.1)

  4. Toevoeging van de SOM van twee onafhankelijke tabellen