PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wywołania funkcji agregujących postgres nie mogą być zagnieżdżone

Zakładam, że najpierw trzeba obliczyć wewnętrzną formułę dla niektórych grup pozycji, a następnie zsumować wyniki. Używam product kolumna jako arbitralny wybór do grupowania kolumny. Zmieniłem również nazwę Count do dcount .

SQLFiddle

Przykładowe dane:

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

Zapytanie:

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

Chodzi o to, że nie można zagnieżdżać funkcji agregujących. Jeśli chcesz agregować agregaty, musisz użyć podzapytania.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odejmij dwa rekordy z tej samej kolumny w tabeli

  2. Wdrożenie NULLS FIRST w Amazon Redshift

  3. Jak uzyskać ostatni wiersz na grupę w PostgreSQL?

  4. PostgreSQL CASE ... END z wieloma warunkami

  5. Kolejność według daty, dodaj datę przed i datę po postgresql z podzapytanie