簡體   English   中英

計算一個使用前一行結果的值

[英]Compute a value that uses result from previous row

我想為當前行的 function 的每一行計算一個值,以及上一行的結果。 我手上的具體function是:

v(i) = k(i) * v(i-1)

這行不通,但總體思路是這樣的

SELECT k * LAST_VALUE(cum) as cum from numbers

或偽代碼:

prev_val = 10
for r in rows 
  prev_val = prev_val + prev_val * r.k
  r.v = prev_val

這是一個示例輸入表:

v k
1個 0
1個 3個
1個 2個
1個 5個

以及所需的 output:

v k
1個 0
4個 3個
12 2個
72 5個

每行中 v 的值的計算方法是將為前一行計算的值乘以 (k+1)。 例如 1 * (3+1) = 4、4*(2+1) = 12。

應該像下面的例子一樣簡單

select *, 1 * exp(sum(ln(1+k)) over(order by i)) as calculated_v
from your_table  

如果應用於您問題中的示例數據 - output 是

筆記; 你必須有一些列來定義計算順序——所以我出於這個確切的原因添加了i列——但它可以是任何類型的列——比如日期或時間戳等。

在此處輸入圖像描述

暫無
暫無

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

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