首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在滚动的1小时窗口中聚合结果

如何在滚动的1小时窗口中聚合结果
EN

Stack Overflow用户
提问于 2019-05-23 12:53:37
回答 2查看 65关注 0票数 1

我有一个Postgres表,其中包含到达某个位置的车辆的交付记录。(每次旅行都有一个唯一的记录)。我可以通过按小时汇总来监控繁忙时段,使用如下代码...

代码语言:javascript
运行
AI代码解释
复制
select count(*), LOCATION, date_trunc('hour',ARRIVALTIME)
from ARRIVALS
group by LOCATION, date_trunc('hour',ARRIVALTIME)
order by LOCATION, date_trunc('hour',ARRIVALTIME) desc

我可以使用这个(与小mods)来找到每个位置最忙的1小时。然而,这是有局限性的,它仅根据完整的时间顺序进行汇总,即在1点和2点之间,然后是2点和3点之间等。

问题--我如何找到一天中最忙的60分钟“滚动窗口”?

以此为例。如果我在13:30到14:30之间每两分钟就有一次到达(没有其他的),那么我上面显示的查询会告诉我,从1到2有15次交付,从2到3也是如此。我真正想要的是一个查询,它会告诉我我最忙的60分钟是13:30到14:30之间的30次交付。

我使用的是postgres 10.5版

代码语言:javascript
运行
AI代码解释
复制
DROP TABLE arrival;
CREATE TABLE arrival (  location CHAR(15),  arrivalTime TIMESTAMP);
INSERT INTO arrival (location,arrivalTime) VALUES('LONDON','01-Jan-2000 09:45:00');
INSERT INTO arrival (location,arrivalTime) VALUES('LONDON','01-Jan-2000 09:50:00');
INSERT INTO arrival (location,arrivalTime) VALUES('LONDON','01-Jan-2000 09:55:00');
INSERT INTO arrival (location,arrivalTime) VALUES('LONDON','01-Jan-2000 09:59:00');
INSERT INTO arrival (location,arrivalTime) VALUES('LONDON','01-Jan-2000 10:10:00');
INSERT INTO arrival (location,arrivalTime) VALUES('LONDON','01-Jan-2000 10:15:00');
INSERT INTO arrival (location,arrivalTime) VALUES('LONDON','01-Jan-2000 10:25:00');
INSERT INTO arrival (location,arrivalTime) VALUES('PARIS','01-Jan-2000 09:58:00');
INSERT INTO arrival (location,arrivalTime) VALUES('PARIS','01-Jan-2000 10:01:00');
INSERT INTO arrival (location,arrivalTime) VALUES('PARIS','01-Jan-2000 10:02:00');
INSERT INTO arrival (location,arrivalTime) VALUES('PARIS','01-Jan-2000 11:02:00');

到目前为止,这两种方法都存在“RANGE FOLLOWING is supported only with UNBOUNDED”的错误。“‘RANGE”对我来说是新的,所以我现在正在读一些东西。

更新-好的,看来'RANGE‘需要版本11。有人知道有没有变通的办法吗?

EN

回答 2

Stack Overflow用户

发布于 2019-05-23 13:16:56

可以将窗口函数与range窗口说明符一起使用:

代码语言:javascript
运行
AI代码解释
复制
select a.*,
       count(*) over (order by arrivaltime
                      range between current row and '1 hour'::interval following
                     ) as hourcnt
from arrivals a
order by hourcnt desc
fetch first 1 row only;
票数 3
EN

Stack Overflow用户

发布于 2019-05-23 13:19:50

对于Postgres 11,这是可行的(因为我没有样本数据来测试,这只是一个草图)

代码语言:javascript
运行
AI代码解释
复制
SELECT
    COUNT(*) OVER (ORDER BY arrivaltime RANGE BETWEEN interval '30 minutes' PRECEDING AND interval '30 minutes' FOLLOWING)
FROM
    arrival
ORDER BY count DESC

每个有序记录的RANGE window function计数在30分钟之前和之后记录具有时间戳的所有记录。当然,这可以进行调整以更适合您的用例(也许是BETWEEN CURRENT ROW AND interval '1 hour' FOLLOWING)

Further reading

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56275699

复制
相关文章
ES 基于查询结果的聚合
在了解本文内容前,必须先了解ES DSL查询和ES 聚合查询,ES基于查询结果的聚合分为两种,第一种类似与关系型数据库中的Having语法,第二种类似于关系型数据库中先where在group by的语法,本文主要分析先查询后聚合场景
郑小超.
2022/09/21
1.4K0
Elasticsearch聚合学习之四:结果排序
本文是《Elasticsearch聚合学习》系列的第四篇,在前面的实战中,聚合的结果以桶(bucket)为单位,放在JSON数组中返回,这些数据是没有排序的,今天来学习如何给这些数据进行排序;
程序员欣宸
2019/05/27
7.8K0
Elasticsearch聚合学习之五:排序结果不准的问题分析
版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boling_cavalry/article/details/90319399
程序员欣宸
2019/05/26
2.8K0
概念与风口中的AI医疗,如何在基层医疗“见真章”?
医疗领域一直以来都是AI的绝佳落地场景,而当AI医疗的触角伸向基层,这样的“落地”方式,让技术的“社会价值”更加明显地显露出来。
曾响铃
2019/12/12
8130
概念与风口中的AI医疗,如何在基层医疗“见真章”?
Elasticsearch 聚合数据结果不精确,怎么破?
请教一个问题,ES 在聚合的时候发生了一个奇怪的现象聚合的语句里面size设置为10和大于10导致聚合的数量不一致,这个size不就是返回的条数吗?会影响统计结果吗?dsl语句摘要(手机敲不方便,双引号就不写了):
铭毅天下
2020/07/24
3.5K0
Elasticsearch 聚合数据结果不精确,怎么破?
Jmeter 测试结果分析之聚合报告简介
对于每个请求,它统计响应信息并提供请求数,平均值,最大,最小值,错误率,大约吞吐量(以请求数/秒为单位)和以kb/秒为单位的吞吐量.
授客
2019/09/11
2.1K0
Jmeter 测试结果分析之聚合报告简介
如何在DataGrid里面产生滚动条而不滚动题头
我们在开发的时候一定遇到,使用DataGrid的时候由于不想分页(数据没有那么多)但是又显示不在一页里面,此时我们希望在DataGrid里面出现一个滚动条,可以上下滚动DataGrid里面的数据而不用上下滚动页面,由于写本文的目的是为了说明如何实现,所以对于细节性的问题读者可以自己思考完成(比如:既要分页又要滚动等等)。为了可以滚动DataGrid我们需要一个可以让客户端的Table滚动js脚本(该js代码我是从CodeProject上面下载的),但又不能滚动Table的题头(也就是第一行)。我们都知道Da
阿新
2018/04/13
1.6K0
DICOM影像中的窗宽窗位
医学图像领域的关键技术窗技术,是CT检查中用以观察不同密度的正常组织或病变的一种显示技术,包括窗宽(window width)和窗位(window level)。由于各种组织结构或病变具有不同的CT值,因此想要显示某一组织结构细节时,应该选择适合观察该组织或病变的窗宽和窗位,以获得最佳显示。
全栈程序员站长
2022/09/07
1.5K0
不同组织的窗宽窗位
垂体及蝶鞍区病:变窗宽宜设在200 Hu~250 Hu,窗位45 Hu~50 Hu,
全栈程序员站长
2022/06/24
7690
flink部分面试题汇总
当 Flink 集群启动后,⾸先会启动⼀个 JobManger 和⼀个或多个的 TaskManager。由 Client 提交任务给 JobManager,JobManager 再调度任务到各个 TaskManager 去执⾏,然后 TaskManager 将⼼跳和统计信息汇报给 JobManager。TaskManager 之间以流的形式进⾏数据的传输。上述三者均为独⽴的 JVM 进程。
从大数据到人工智能
2022/03/12
1.4K0
flink部分面试题汇总
如何让Windows文件管理器滚动如macOS奶油般顺滑?
鼠标中键滚轮每转动一格,windows文件管理器就会移动相应的行数,注意这里是行数,而不是屏幕的最小单位,像素!这意味着,如果你的鼠标中键滚轮滚动时有卡顿感,就无法让Windows文件管理器更流畅。
zhaoolee
2021/03/02
1.8K0
如何让Windows文件管理器滚动如macOS奶油般顺滑?
SQL窗口函数概述
在应用WHERE、GROUP by和HAVING子句之后,窗口函数对SELECT查询选择的行进行操作。
用户7741497
2022/03/27
2.4K1
oracle行转列函数 聚合_oracle查询结果行转列
2.使用 listagg() WITHIN GROUP () 将多行合并成一行(比较常用)
全栈程序员站长
2022/10/04
1.4K0
oracle行转列函数 聚合_oracle查询结果行转列
快速入门Flink (9) —— DataStream API 开发之【Time 与 Window】
Event Time:是事件创建的时间。它通常由事件中的时间戳描述,例如采集的日志数据中, 每一条日志都会记录自己的生成时间,Flink 通过时间戳分配器访问事件时间戳。
大数据梦想家
2021/01/21
1.1K0
VBA专题10-2:使用VBA操控Excel界面之设置工作表
名称框中的名字是为单元格区域定义的名字,可以由用户定义名称,或者由Excel自动创建,例如Print_Area和表1。
fanjy
2020/07/02
4.9K0
如何在Loki中使用LogQL做聚合查询
自从Loki2.0发布以来,LogQL v2凭借丰富的查询功能,让Loki也逐渐具备日志分析的能力。对于有些时候,当研发的同学没有提供Metrics时,我们也能利用LogQL构建基于日志的相关指标,这里面就主要用到了聚合查询。
云原生小白
2021/01/15
4.9K0
如何在Loki中使用LogQL做聚合查询
如何在Lok中使用LogQL做聚合查询
自从Loki2.0发布以来,LogQL v2凭借丰富的查询功能,让Loki也逐渐具备日志分析的能力。对于有些时候,当研发的同学没有提供Metrics时,我们也能利用LogQL构建基于日志的相关指标,这里面就主要用到了聚合查询。
云原生小白
2021/05/13
1.5K0
如何在Lok中使用LogQL做聚合查询
flutter - 如何在SingleChildScrollView中实现非滚动 ListView
我试图在这里实现一个不可滚动的ListView构建器,但似乎找不到解决方法。原因是因为我希望所有内容都是可滚动的,并且我不想在可滚动的父级中拥有可滚动的小部件。
徐建国
2021/08/03
2.5K0
点击加载更多

相似问题

如何在框架窗口中添加滚动窗格

11

图像在垂直滚动窗格视图端口中消失

13

Ruby Shoes -子窗格窗口中的滚动条

32

如何在滚动窗口中“检查”(警告) InfluxDB 2.0中的聚合?

149

没有jQuery / Javascript的窗口中有多个滚动窗格?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文