У меня есть эта таблица и образец данных в базе данных Postgres
CREATE TABLE testAAA(Id integer PRIMARY KEY, datum date, COLA text, COLB text, COLC text, COLD int);
/* Create few records in this table */
INSERT INTO testAAA VALUES(1,to_date('01/01/2018','dd/mm/yyyy'),'PLANTA','VENDORA','OPA','1');
INSERT INTO testAAA VALUES(2,to_date('01/02/2018','dd/mm/yyyy'),'PLANTA','VENDORA','OPA','1');
INSERT INTO testAAA VALUES(3,to_date('01/03/2018','dd/mm/yyyy'),'PLANTA','VENDORA','OPA','1');
INSERT INTO testAAA VALUES(4,null,'PLANTA','VENDORA','OPA','1');
INSERT INTO testAAA VALUES(5,to_date('01/10/2018','dd/mm/yyyy'),'PLANTA','VENDORA','OPA','5');
INSERT INTO testAAA VALUES(6,to_date('01/10/2018','dd/mm/yyyy'),'PLANTA','VENDORA','OPA','10');
INSERT INTO testAAA VALUES(7,to_date('01/11/2018','dd/mm/yyyy'),'PLANTA','VENDORB','OPA','50');
INSERT INTO testAAA VALUES(8,to_date('01/10/2018','dd/mm/yyyy'),'PLANTA','VENDORA','OPA','10');
INSERT INTO testAAA VALUES(9,to_date('01/11/2018','dd/mm/yyyy'),'PLANTA','VENDORA','OPB','5');
COMMIT;
Я пытаюсь составить среднюю сумму на основе условия и комбинации:
SELECT COLA,COLB,COLC,
CASE
WHEN (datum >= now() - interval '6 month') THEN SUM(COLD)/6
ELSE '0'
END AS datum_range
FROM testAAA
group by COLA,COLB,COLC;
Моя цель состоит в том, чтобысгенерировать среднее значение за 6 месяцев для столбца COLD, используя в качестве комбинации COLA + COLB + COLC, если условие интервала DATE выполнено, пропуская нулевое значение.
Прямо сейчас я получаю эту ошибку:
Error(s), warning(s):
42803: column "testaaa.datum" must appear in the GROUP BY clause or be used in an aggregate function
Как исправить вышеуказанную ошибку?