我几年(2003-2008年)的数据分布不均(写日期)。我想查询给定开始日期和结束日期的数据,按PostgreSQL
8.3(http://www.postgresql.org/docs中支持的任何间隔(天,周,月,季度,年)将数据分组/8.3/static/functions-datetime.html#FUNCTIONS-
DATETIME-TRUNC
)。
问题在于,某些查询会在要求的时间内连续提供结果,如下所示:
select to_char(date_trunc('month',date), 'YYYY-MM-DD'),count(distinct post_id)
from some_table where category_id=1 and entity_id = 77 and entity2_id = 115
and date <= '2008-12-06' and date >= '2007-12-01' group by
date_trunc('month',date) order by date_trunc('month',date);
to_char | count
------------+-------
2007-12-01 | 64
2008-01-01 | 31
2008-02-01 | 14
2008-03-01 | 21
2008-04-01 | 28
2008-05-01 | 44
2008-06-01 | 100
2008-07-01 | 72
2008-08-01 | 91
2008-09-01 | 92
2008-10-01 | 79
2008-11-01 | 65
(12 rows)
但是其中一些会因为没有数据而错过一些时间间隔,例如:
select to_char(date_trunc('month',date), 'YYYY-MM-DD'),count(distinct post_id)
from some_table where category_id=1 and entity_id = 75 and entity2_id = 115
and date <= '2008-12-06' and date >= '2007-12-01' group by
date_trunc('month',date) order by date_trunc('month',date);
to_char | count
------------+-------
2007-12-01 | 2
2008-01-01 | 2
2008-03-01 | 1
2008-04-01 | 2
2008-06-01 | 1
2008-08-01 | 3
2008-10-01 | 2
(7 rows)
所需结果集为:
to_char | count
------------+-------
2007-12-01 | 2
2008-01-01 | 2
2008-02-01 | 0
2008-03-01 | 1
2008-04-01 | 2
2008-05-01 | 0
2008-06-01 | 1
2008-07-01 | 0
2008-08-01 | 3
2008-09-01 | 0
2008-10-01 | 2
2008-11-01 | 0
(12 rows)
缺少条目的计数为0。
我已经看到了关于堆栈溢出的较早讨论,但是它们似乎并不能解决我的问题,因为我的分组时间是(天,周,月,季度,年)之一,并且由应用程序决定运行时。因此,我猜想像日历表或序列表的左联接之类的方法将无济于事。
我目前的解决方案是使用日历模块填补Python(在Turbogears App中)的这些空白。
有一个更好的方法吗。
您可以使用以下方法创建去年(例如)的所有前几天的列表
select distinct date_trunc('month', (current_date - offs)) as date
from generate_series(0,365,28) as offs;
date
------------------------
2007-12-01 00:00:00+01
2008-01-01 00:00:00+01
2008-02-01 00:00:00+01
2008-03-01 00:00:00+01
2008-04-01 00:00:00+02
2008-05-01 00:00:00+02
2008-06-01 00:00:00+02
2008-07-01 00:00:00+02
2008-08-01 00:00:00+02
2008-09-01 00:00:00+02
2008-10-01 00:00:00+02
2008-11-01 00:00:00+01
2008-12-01 00:00:00+01
然后,您可以加入该系列。
问题内容: 我敢肯定这个问题已经问过了,但是找不到嵌套的if-else和switch-case逻辑解决我的问题的答案。 我有两个部分,每个部分都有两个自定义单元格。就是这样。4格。但是无论我做什么,都会得到“在期望返回的函数中缺少返回” 问题 如何更改此设置,以便在底部获得满足快速逻辑的else语句? 任何帮助将不胜感激 问题答案: 在方法开始时声明单元格, 根据部分和行号为单元格分配一个值, 在
问题内容: 我正在使用goLang lib / pq驱动程序,并尝试从数据库中获取行。 我想要一个if else子句,该子句检查结果集中是否有行,我这样做了: 但这总是少给我1条记录,由于该子句,我认为它会跳过一条记录,因为一旦我删除了子句,我就会正确地获得所有记录。我如何知道从选择查询返回的行数而不执行另一个查询? 问题答案: 使用“ 行”对象时,没有任何帮助程序方法可以一步完成总行数的计算。
有时它可以返回多个结果。因此,我不认为会起作用。 如何在Python中计算行数?就像在PHP中一样,我可以使用。 我找不到任何方法来做这件事。我正在使用Python3。 我对python MySQL绝对是新手。我对PHP中的MySQL真的很熟悉。 您可以使用来实现。但是,出于我的好奇:有没有方法直接使用pymysql来实现它?
我有一种感觉,这是一个业余的错误,我希望你们能帮助我!
问题 为什么PayPal在返回参数之前?(问号)? 如何解决此问题,如何获取其他参数? 什么是最干净的解决方案?
我有一个二维布尔数组“poorSignal”,需要编写一个返回网格的方法,如果数组上的一个点为真,则显示X,如果为假,则显示O。这是我的代码: 当我编译时,它在方法的最后一行给出了“missing return statement”。我也不确定“return”\n在打印阵列时是否可以添加新行。 这是一个赋值问题,所以我不能直接打印它,也不能只打印布尔值——它必须是一个生成网格的方法。