相关疑难解决方法(0)

Postgresql SQL GROUP BY时间间隔,任意精度(低至毫秒)

我将测量数据存储到以下结构中:

CREATE TABLE measurements(
measured_at TIMESTAMPTZ,
val INTEGER
);
Run Code Online (Sandbox Code Playgroud)

已经知道使用了

(一个) date_trunc('hour',measured_at)

(b)中 generate_series

我可以通过以下方式汇总我的数据:

microseconds,
milliseconds
.
.
.
Run Code Online (Sandbox Code Playgroud)

但是有可能将数据聚合5分钟,或者说是任意秒数吗?是否可以将测量数据聚合为任意秒数?

我需要通过不同时间分辨率聚合的数据将它们馈送到FFT或AR模型中,以便查看可能的季节性.

postgresql group-by

39
推荐指数
8
解决办法
2万
查看次数

PostgreSQL:按分钟运行查询的行数

我需要查询每分钟直到该分钟的总行数.

到目前为止我能达到的最好成绩并没有成功.它返回每分钟的计数,而不是每分钟的总计数:

SELECT COUNT(id) AS count
     , EXTRACT(hour from "when") AS hour
     , EXTRACT(minute from "when") AS minute
  FROM mytable
 GROUP BY hour, minute
Run Code Online (Sandbox Code Playgroud)

sql postgresql datetime aggregate-functions window-functions

35
推荐指数
1
解决办法
2万
查看次数

Postgres - 如何返回丢失数据的0计数行?

我有不均匀分布的数据(wrt日期)几年(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)
Run Code Online (Sandbox Code Playgroud)

但有些人因为没有数据而错过了一些间隔,因为这个:

select …
Run Code Online (Sandbox Code Playgroud)

python database postgresql left-join generate-series

13
推荐指数
2
解决办法
9203
查看次数

按数据间隔分组

我有一个表,可以在一段时间内存储网络上的带宽使用情况.一列将包含日期时间(主键),另一列将记录带宽.每分钟记录一次数据.我们将在那个时刻记录其他数据.

如果用户以15分钟的间隔(在给定的开始和结束日期的24小时内)请求数据,是否可以使用单个查询来获取我需要的数据,或者我是否必须编写存储过程/光标来执行此操作?然后,用户可以请求5分钟间隔数据等.

我很可能会使用Postgres但是还有其他NOSQL选项会更好吗?

有任何想法吗?

sql postgresql aggregate-functions nosql generate-series

5
推荐指数
2
解决办法
5513
查看次数

检索任意时间间隔的聚合

这是我到目前为止的查询,创建每日栏:

SELECT DISTINCT date_trunc('hour',t) AS date,
min(price) OVER w,
max(price) OVER w,
first_value(price) OVER w,
last_value(price) OVER w
FROM ticker
WINDOW w AS (PARTITION BY date_trunc('hour',t));
Run Code Online (Sandbox Code Playgroud)

将"小时"更改为"分钟"或"天"将为我提供与这些单位对应的条形图.

但是,如果我想要5分钟或15分钟的酒吧怎么办?date_trunc()不支持这些,我正在寻找一个很好的方式来做到这一点.

sql postgresql generate-series

4
推荐指数
1
解决办法
1279
查看次数

如何获得Postgres中时间间隔的平均值

我正在使用PostgreSQL 9.6.我有这样一张桌子:

mac   sn         loc   time     date      vin1    vin2    vin3
1a34 4as11111111 aaaa  7:06:18  1/1/2018  447.42  472.32  682.59
1a34 4as11111111 aaaa  7:06:43  1/1/2018  455.97  476.25  682.59
1a34 4as11111111 aaaa  7:07:35  1/1/2018  470.88  484.2   682.5
Run Code Online (Sandbox Code Playgroud)

我需要计算的平均vin1,vin2,vin3300秒(5分钟)的时间间隔内.例如,从第一次(7:06:18 - 7:11:18)开始,为范围内的日期.我可以使用此查询选择我需要的数据:

select * from table
where sn='4as11111111' and date between '2018-01-01' and '2018-01-02';
Run Code Online (Sandbox Code Playgroud)

但我不知道如何用300秒的时间间隔组,并为计算平均vin1,vin2,vin3对于那些5分钟间隔栏,让这样的事情:

mac  sn          loc     time     date      vin1_av  vin2_av  vin3_av
1a34 4as11111111 aaaa   7:06:18  1/1/2018  450.0    480.32   600.59
1a34 4as11111111 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql group-by average generate-series

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