[英]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';
你的問題不是 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.