【问题标题】:All values are null for lag() functionlag() 函数的所有值都为空
【发布时间】:2019-11-12 17:23:50
【问题描述】:
Select date, symbol, open, high, low, cts.close, volume, lag(cts.close) over (PARTITION by date, symbol) as prevclose, 
((cts.close - cts.open) / cts.close) * 100 as prcnt
from cts
where cts.close <> 0;

整个列 prevclose 保持为空。

【问题讨论】:

    标签: sql postgresql null lag


    【解决方案1】:

    这很可能是因为您按date 列进行分区,该列具有时间分量。每个分区都是唯一的,因此没有“prev”值。

    同样LAG 没有ORDER BY 也没有意义。不保证订单。

    SELECT ..., lag(cts.close) over (PARTITION by date, symbol) as prevclose
    FROM cts;
    

    在我看来应该是这样的:

    SELECT ..., lag(cts.close) over (PARTITION BY symbol ORDER BY date) as prevclose
    FROM cts;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2021-07-13
      • 2020-02-17
      • 2020-03-01
      • 2021-10-06
      相关资源
      最近更新 更多