簡體   English   中英

MySQL lag() 默認值為前一行值

[英]MySQL lag() with default value previous row value

這是我的 sqlfiddle - http://sqlfiddle.com/#!9/fa7b9a/2

對於 3 月的結果,我如何才能使用 LAG() 之前和當前的它?

SELECT p6 as Current,lag(p6) over (ORDER BY dt) AS previous_val FROM dobridol
WHERE  dt BETWEEN '2021-03-01' AND '2021-03-30'

另外,我如何像往常一樣為 previous_val 最后一個 FEB 結果設置第一個值,然后設置為 go?

一種可能的解決方案 - 計算整個表的 LAG,然后過濾結果:

SELECT 
    p6,
    id,
    prev_val 
FROM (
  SELECT
    dt,
    p6,
    id,
    lag(p6) over (ORDER BY dt) AS prev_val 
  FROM dobridol
) tbl
WHERE dt BETWEEN '2021-03-01' AND '2021-03-30';

SQL 小提琴

你的問題不是 100% 清楚的。 您想要上個月的哪個值?

如果您想要最大值,您可以將max()與 window 幀規范一起使用:

select d.*,
      max(p6) over (order by year(dt) * 12 + month(dt)
                    range between 1 preceding and 1 preceding
                   )
from dobridol d;

是一個 db<>fiddle。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM