【发布时间】:2022-01-26 02:03:27
【问题描述】:
我有一个超过 300 列的市场价格记录表,系统每 15 秒记录一次数据。每分钟记录 4 行
| _id | the_datetime | column1 | column2 | column3 |
|---|---|---|---|---|
| 1 | 2021-12-26 19:05:00 | 0.25 | 36.50 | 15.12 |
| 2 | 2021-12-26 19:05:15 | 0.25 | 36.60 | 15.12 |
| 3 | 2021-12-26 19:05:30 | 0.21 | 36.12 | 15.20 |
| 4 | 2021-12-26 19:05:45 | 0.32 | 36.50 | 15.22 |
| 5 | 2021-12-26 19:06:00 | 0.35 | 36.25 | 15.23 |
| 6 | 2021-12-26 19:06:15 | 0.36 | 36.33 | 15.24 |
| 7 | 2021-12-26 19:06:30 | 0.36 | 36.50 | 15.36 |
对于第 1 列
SELECT _id,
column1 ,
LAG(column1 ,12) over (partition by _id order by _id desc)as colum3min
FROM the_table
order by _id desc
如果价格变化高于 %0.5,我需要每 3 分钟检查一次 columnX 价格变化。对于每一行插入..
我试图写一个 LAG 函数 SQL 但它不起作用。
谁能帮我为postgresql写这个sql?
【问题讨论】:
-
通过轻微的设计更改,您可以通过一个查询一次对所有项目执行此操作。您需要添加一个 item_id 列并分别插入每个项目。插入一行约 300 个项目(每列 1 个)可能不方便/处理成本高。然后,您只需在
LAG计算中使用PARTITION BY item_id。
标签: sql postgresql