Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
求和并生成序列在postgresql中不起作用_Postgresql_Sum_Generate Series - Fatal编程技术网

求和并生成序列在postgresql中不起作用

求和并生成序列在postgresql中不起作用,postgresql,sum,generate-series,Postgresql,Sum,Generate Series,在分类标识栏中,我有一些数字。我想在一天的系列中对这些数字求和。我写了下面的问题 select a.data_start::date, a.segment1::integer as "Segment1" from ( select data as data_start, (select sum(classification_indicator_id) from classifications where classification_indicator_id = 3)::inte

在分类标识栏中,我有一些数字。我想在一天的系列中对这些数字求和。我写了下面的问题

select
a.data_start::date,
a.segment1::integer as "Segment1"
from (
select
    data as data_start,
    (select sum(classification_indicator_id) from classifications where classification_indicator_id = 3)::integer as segment1
from
    generate_series('2013-03-25'::timestamp without time zone,
    '2013-04-01'::timestamp without time zone,
    '1 day'::interval) data
) a
group by
a.data_start,
a.segment1
ORDER BY data_start
但我总是得到这样的东西:

date start|segment1
-------------------
2013-03-25|39
2013-03-26|39
2013-03-27|39
2013-03-28|39
2013-03-29|39
2013-03-30|39
2013-03-31|39
2013-04-01|39
date start|segment1
-------------------
2013-03-25|3
2013-03-26|4
2013-03-27|7
2013-03-28|9
2013-03-29|15
2013-03-30|22
2013-03-31|19
2013-04-01|5
我相信应该是这样的:

date start|segment1
-------------------
2013-03-25|39
2013-03-26|39
2013-03-27|39
2013-03-28|39
2013-03-29|39
2013-03-30|39
2013-03-31|39
2013-04-01|39
date start|segment1
-------------------
2013-03-25|3
2013-03-26|4
2013-03-27|7
2013-03-28|9
2013-03-29|15
2013-03-30|22
2013-03-31|19
2013-04-01|5

我需要添加其他一些列,这些列具有另一个分类\u指示符\u id 我对你的答案稍加修改:

select
data.d::date as "data",
sum(c.classification_indicator_id)::integer as "Segment1",
sum(c4.classification_indicator_id)::integer as "Segment2",
sum(c5.classification_indicator_id)::integer as "Segment3"
from 
  generate_series(
    '2013-03-25'::timestamp without time zone,
    '2013-04-01'::timestamp without time zone,
    '1 day'::interval
) data(d)
left join classifications c on (data.d::date = c.created::date and c.classification_indicator_id = 3)
left join classifications c4 on (data.d::date = c4.created::date and c4.classification_indicator_id = 4)
left join classifications c5 on (data.d::date = c5.created::date and c5.classification_indicator_id = 5)
group by "data"
ORDER BY "data"
但仍然不能正常工作。每行的总和太大,当我添加额外的列时,它会不断增长

With 4 columns                          With 3 column
data      |Segment1|Segment2|Segment3   data      |Segment1|Segment2
-------------------------------------   ----------------------------
2013-03-25|12      |16      |20         2013-03-25|12      |16      
-------------------------------------   ----------------------------
2013-03-26|108     |144     |180        2013-03-26|18      |24    

感谢您的回答,这很好:但是如何修改此查询以添加其他列,例如,在分类\指标\ id=4,分类\指标\ id=6等@infaustus,您可以通过添加列或执行组级累加器来完成。想一想你到底想要什么,然后打开另一个问题。合并不应该是必需的,sum忽略空值。@如果所有的合计值都为空,则结果将为空。从值null::integer sa中选择select suma为null。我猜他想要一个零。你可以说我应该合并求和的结果,而不是每个值,你是对的。如果你认为这会有所不同的话,可以自由地编辑它。会有没有完全没有分类的日子?你想用计数0列出那些日子吗?您还必须提供表定义创建表脚本以获得精确答案。这取决于列是否可以为空以及是否要计算这些列。是的,某一天没有分类。我要列出那些日子。我修改了@Clodoaldo Neto发送的一点答案。我把它作为一个新答案发布。我将创建新问题,这可能会产生代理交叉连接。如果在c、c4或c5中有多个匹配行,则它们形成交叉联接,乘以它们的计数,这很可能不是您想要的。考虑: