小编Ele*_*a_K的帖子

在 PostgreSQL 中计算每日总和

我对 postgres 相当陌生,我想做的是计算每个月每天的总和值(即每日总和值)。根据分散的信息,我想出了这样的东西:

CREATE OR REPLACE FUNCTION sumvalues() RETURNS double precision AS
$BODY$
BEGIN
   FOR i IN 0..31 LOOP
   SELECT SUM("Energy") 
   FROM "public"."EnergyWh" e
   WHERE  e."DateTime" = day('01-01-2005 00:00:00'+ INTERVAL 'i' DAY);
   END LOOP;

END
$BODY$
LANGUAGE plpgsql VOLATILE NOT LEAKPROOF;
ALTER FUNCTION public.sumvalues()
  OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)

查询成功返回,所以我认为我已经成功了。但是,当我尝试将函数的值插入表中时(这可能是错误的):

INSERT INTO "SumValues"
("EnergyDC") 

    (
     SELECT sumvalues()
     ); 
Run Code Online (Sandbox Code Playgroud)

我明白了:

错误:间隔类型的输入语法无效:“01-01-2005 00:00:00”第 3 行:WHERE e."DateTime" = day('01-01-2005 00:00:00'+ INTERVAL...

我尝试自己调试它,但不确定我做错了哪一个(或两者)以及为什么。

这是EnergyWh的示例

(我使用 systemid 和 datetime 作为复合 PK,但这应该不重要)

postgresql sum

3
推荐指数
1
解决办法
4374
查看次数

标签 统计

postgresql ×1

sum ×1