我有一台数字电表.这个数字电表把它的计量数据放入(Postgres)数据库.相关数据如下:

时间戳,Total_m3

每隔几秒到几分钟,我就会将数据记录到数据库中.因此,每隔15分钟,我的数据库中就会有0到100个条目.

TOTAL_M3值是递增计量值.

我正在寻找要获取的SELECT查询: 每15分钟计量器测量的量.

例如:

2023-05-11 20:59:49.000000, 296.650
2023-05-11 20:50:49.000000, 296.650
2023-05-11 20:45:49.000000, 296.250
2023-05-11 20:37:49.000000, 296.150
2023-05-11 20:30:49.000000, 296.000

结果应该如下所示:

2023-05-11 21:00:00.000000, 0.4
2023-05-11 20:45:00.000000, 0.25

在SQL中可以做到这一点吗?或者我应该直接说F*It,我把逻辑编码到应用程序中.

推荐答案

您可以将日期解析为间隔15分钟,并使用它进行分组

SELECT
    date_trunc('minute', "dt") + interval '15 minute'
  - (CAST(EXTRACT(MINUTE FROM "dt") AS integer) % 15) * interval '1 minute' AS trunc_15_minute


  ,MAX("value") - MIN("value") dff
FROM tabl1
GROUP BY trunc_15_minute
ORDER BY trunc_15_minute;
trunc_15_minute dff
2023-05-11 20:45:00 0.150
2023-05-11 21:00:00 0.400
SELECT 2

fiddle

Sql相关问答推荐

Postgres:对包含数字的字符串列表进行排序

Select 起始参数和截止参数之间的间隔,包括与期间重叠的参数

如何在SQL中按每个子组的顺序更新数据?

在数据库中搜索列

每年独特口味的冰淇淋数量

如何隐藏聚合JSON数组元素的键

返回UPSERT中的旧行值

按分类标准检索记录

根据开始日期和结束日期的差异计算每天的计费

如何在SQL中从多个查询进行分组

SQL按组 Select 最小值,当值不存在时为Null

在Postgres,什么是;.USSTZ;在';YYYY-MM-DD;T;HH24:MI:SS.USSTZ';?

STContains、STIntersections和STWithin返回错误的地理结果

从选定记录中提取摘要作为值的划分

在 SQL Server 中查找重复项

SQL Server - 复杂场景 - 比较状态并填充值到后续行

所有列分组的简写?

在 BigQuery 数据集中查找表大小和占总数据集大小的百分比

具有日期时间条件的存储过程

SQL:获取连接表的第一个项目