我想使用 SQL ROLLING WINDOW 對 3 行(ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)求和:
問題是,如果嘗試使用 ROWS BETWEEN 2 AND CURRENT ROW 陳述句,即使我只有一個前一行,它也會提供 SUM,如果前面沒有 2 個并且只有一個,我希望結果為 NULL / 0。
有沒有辦法讓它像那樣?
感謝您的時間!
uj5u.com熱心網友回復:
考慮以下說明方法的示例
with your_table as (
select 1 ts, 10 value union all
select 2, 20 union all
select 3, 30 union all
select 4, 40
)
select *,
if(count(value) over win = 3, sum(value) over win, null) result
from your_table
window win as (order by ts rows between 2 preceding and current row)
帶輸出

如果您希望至少落后一排 - 您可以使用
select *,
if(count(value) over win > 1, sum(value) over win, null) result
from your_table
window win as (order by ts rows between 2 preceding and current row)
帶輸出

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/385356.html
