PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

извикванията на агрегатни функции на postgres може да не са вложени

Предполагам, че първо трябва да изчислите вътрешната формула за някои групи елементи и след това да сумирате резултатите. Използвам product колона като произволен избор за групиране на колона. Също така преименувах Count към dcount .

SQLFiddle

Примерни данни:

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

Заявка:

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

Въпросът е, че не можете да влагате агрегатни функции. Ако трябва да агрегирате агрегати, трябва да използвате подзаявка.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Правилно обработване на TIME WITH TIME ZONE в PostgreSQL

  2. Как да генерирам сериен номер в заявка?

  3. създайте колона за автоматична дата в postgresql

  4. Създаване на таблица от MySQL към PostgreSQL - набор от знаци и сортиране

  5. Грешка в Postgres:не можа да се отвори файл за четене:Разрешението е отказано