来自过程性编程,我正在考虑使用循环来解决这个问题.示例逻辑:
- 按
column1
值和日期列降序排序.查询类似于:
select *
from table1
where column1 in ('cpu1')
order by date_time desc;
- 找到SELECT查询中的最后一行以及它上面的第22行,以定义要查看的第一组数据的循环起点.我目前没有序列化这些行,但知道每个行条目之间的时间是5分钟,所以我可以使用时间戳来确定22行.我认为该查询类似于:
select *
from table1
where date_time between x and y;
- 找到在BETWEEN语句中 Select 的数据中的第10行,并确定第10行中的第2列是否大于上面的所有12行,以及第3列第10行是否比上面的所有12行都大,或者第3列第10行是否小于上面的12行和第9行.如果大于或小于,则将第10行打印到新表.
我还没有关于这个查询的任何东西,因为我不知道如何以使用Java脚本数组或Python字典的方式导航表索引.
- 递增x、y和第10行值-1并再次运行循环.
The problem个
我正在努力理解如何将PostgreSQL脚本组合在一起.我也曾用Python或Java脚本设计过类似的样式循环,但我越是阅读有关如何在SQL中使用它的可能方法,我就越困惑.最理想的CTE方式是For、While还是一个游标?
示例表数据:
column1 | column2 | column3 | date |
---|---|---|---|
cpu1 | 3.2 | 1.1 | 01:45:00 |
cpu1 | 3.5 | 1.3 | 01:40:00 |
cpu1 | 5.9 | 0.1 | 01:35:00 |
cpu1 | 1.7 | 1.2 | 01:30:00 |
cpu1 | 2.5 | 2.3 | 01:25:00 |
cpu1 | 5.2 | 4.1 | 01:20:00 |
cpu3 | 4.2 | 1.1 | 01:45:00 |
cpu3 | 3.1 | 1.0 | 01:40:00 |
cpu3 | 5.0 | 3.3 | 01:35:00 |
cpu3 | 4.7 | 3.2 | 01:30:00 |
cpu3 | 2.7 | 2.1 | 01:25:00 |
cpu3 | 6.2 | 4.8 | 01:20:00 |
-
column1
将是将时间序列写入数据库的设备名称 -
column2
和column3
将从设备中记录值 - 日期将始终以5分钟为增量
- 表1有数百万行