【问题标题】:PostgreSQL LAG function for market price data change in percent用于市场价格数据变化百分比的 PostgreSQL LAG 函数
【发布时间】: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


【解决方案1】:

你不应该partition by _id,你不应该should order by "the_datetime"

with u as
(SELECT _id,
       column1 ,
       LAG(column1, 12) over (order by "the_datetime") as column3min
FROM the_table)
select * from u
where column1 / column3min >= 1.005 or column3min / column1 >= 1.005

Fiddle:我添加了一些条目以表明它正在工作。

【讨论】:

  • 小提琴的链接不起作用;请修复它。
  • @YevgeniyKosmak 哦,对不起。固定!
  • 非常感谢!我的朋友..
  • @BurakOZLER 欢迎来到 Stack Overflow!如果对您有帮助,请随意选择正确的答案。
猜你喜欢
  • 2023-02-20
  • 2013-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
相关资源
最近更新 更多