【发布时间】:2018-12-17 10:58:13
【问题描述】:
我在 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;
我的目标是使用 COLA+COLB+COLC 的组合在 COLD 列上生成过去 6 个月的平均值,如果满足 DATE 间隔条件,则跳过空值。
现在我收到此错误:
Error(s), warning(s):
42803: column "testaaa.datum" must appear in the GROUP BY clause or be used in an aggregate function
如何解决上述错误?
【问题讨论】:
-
请为您的输入数据添加预期输出
标签: postgresql average