暂无图片
求助,当前有一个需求,要求把Postgresql数据库中的数据根据dataTime字段按一定的时间间隔获取数据
我来答
分享
Yanhong
2021-09-06
求助,当前有一个需求,要求把Postgresql数据库中的数据根据dataTime字段按一定的时间间隔获取数据
id        dataTime                  value

1        2020-10-10 00:00:00   1

2        2020-10-10 00:00:01    2

3        2020-10-10 00:00:02    3

4        2020-10-10 00:00:03    4

..                   .....                        ..

复制

数据是一秒钟一条,例如时间间隔是10秒钟,就获取每一个区间的第一条数据,时间间隔是变量,可能是1秒钟,也可能是10分钟,一天,给为大佬帮帮我,我用mod(extract(second from dataTime)::int, 500)= 0 ,这里的500表示时间间隔为500秒,但是求出来的数据不对。数据库的时间类型是timestamq。

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
伊织鸟

使用窗口函数实现,窗口函数的好处是可以使用其他各种汇聚函数。

使用彭冲老师的测试表:

--每10second,一个区间 select distinct first_value(dt) over (partition by floor(extract(epoch from dt)/10)) from test order by 1 asc; --每10minute,一个区间 select distinct first_value(dt) over (partition by floor(extract(epoch from dt)/600)) from test order by 1 asc;
复制

再次感叹一下,PG对研发实在是太友好了

暂无图片 评论
暂无图片 有用 2
打赏 0
暂无图片
彭冲

构建测试数据

create table test(dt timestamp,id int,val int);

insert into test select *,(random()*100)::int  from generate_series('2021-01-01'::timestamp,'2021-01-02'::timestamp,'1 sec') with ordinality;
复制

假设按10秒间隔抽取数据:

with t as
(
 select dt,extract('epoch' from dt)::int as dt_epoch,id,val from test
)
select * from  t where mod(t.dt_epoch,10)=0;
复制

image.png

假设按10分钟间隔抽取数据:

with t as
(
 select dt,extract('epoch' from dt)::int as dt_epoch,id,val from test
)
select * from  t where mod(t.dt_epoch,600)=0;
复制

image.png

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
pg这种时间字段2024-04-12 11:36:57.552872 ,如果用空格作为分隔符,copy无法加载到表中
回答 2
原表第3列字段类型是什么?
postgresql 现在的云有直接划物理机的吗?
回答 2
阿里上pg有独占物理机型,规格代码rds.pg.st.h43,配置60核470GB,最大连接数12000,最大iops50000,存储20GB6000GB
max_parallel_workers的设置依赖cpu的核心数,这个核心数怎么确认
回答 1
在Linux中通过命令查看CPU核心数:lscpu或者nproc。通常建议这个值不要超过物理核心数的一半,以确保有足够的资源给其他系统进程,并避免因过多并行工作导致上下文切换开销过大而影响性能。
vacuum 分区表
回答 1
对一个包含分区表的主表进行VACUUM操作时,默认情况下它将递归地遍历并VACUUM所有的分区表。所以,VACUUM主表时,分区表也会一起被VACUUM。这样做的目的是确保主表和分区表之间的数据一致性
物理复制的启动和停止顺序?
回答 1
在PostgreSQL物理流复制架构中(例如一主一从),进行系统级维护时,通常推荐的停启顺序如下:停止(关库)顺序:先停止从库(Standby):先关闭从库可确保从库不会在主库关闭后反复尝试连接,从而
JSON_MODE参数是控制可以兼容postgreSQL数据库的json解析语法吗?
回答 1
请补充描述一下JSONMODE参数是在什么数据库、什么地方的配置参数。
负责启动和关闭PostgreSQL数据库实例的进程?
回答 12
路过
pg中如何创建一个uuid作为索引或者uuid类型的列?
回答 3
PG里直接就有uuid这个类型,可以直接使用postgrescreatetabletuuid(iduuid);CREATETABLEpostgres\dtuuidTable"public.t
pg中备库发给主库的信息中,已经写入的最新的wal数据和已经刷新的最新的wal数据,有啥区别?
回答 3
writelocation:表示WAL日志已经写入内存的位置,这些日志记录可能还未持久化到磁盘。flushlocation:表示WAL日志已经刷入磁盘的位置,这些日志记录已经持久化,确保数据不会丢失。
commitLog buffer 这个对应的是哪个参数控制的?默认多大
回答 2
如何模糊查看参数:使用16版本psql的元命令\dconfigwal