![](/img/trans.png)
[英]Calculate Remaining Total by Record in Oracle Using LAG Window Function
[英]using window function lag() to calculate percentage change
我正在嘗試計算每行共享特定屬性的每一行之間的差異。 例如,我有一周的三款游戲(RDR2、GTA5、Spyro)的游戲時間,我計算了每天在每款游戲上花費的百分比,我想看看每天的百分比變化是多少。
因此,我寫道:
percent - LAG(percent, 1) OVER (PARTITION BY game ORDER BY time DESC) AS games_delta
但不是獲得所需的輸出:
|-------------------------------|
| TIME GAME PERCENT DELTA |
|-------------------------------|
| Dec 10 RDR2 25 15 |
| Dec 10 GTA5 50 40 |
| Dec 10 Spyro 25 -55 |
| Dec 9 RDR2 10 -22 |
| Dec 9 GTA5 10 10 |
| Dec 9 Spyro 80 13 |
| Dec 8 RDR2 33 ...
| Dec 8 GTA5 0 ...
| Dec 8 Spyro 67 ...
我得到了游戲的多樣性和完全錯誤的game-delta
!:
|-------------------------------|
| TIME GAME PERCENT DELTA |
| Dec 10 RDR2 25 2 |
| Dec 10 RDR2 25 4 |
| Dec 10 RDR2 25 -4 |
| Dec 10 RDR2 25 4 |
| Dec 10 GTA5 10 5 ...
有什么建議? 提前致謝!
編輯:
SELECT time,
game,
percent,
games_delta
我的GROUP BY
和ORDER BY
還有以下內容:
GROUP BY time, game, percent, games_delta
ORDER BY time DESC
編輯2:
這是我的 CTE:
cte_table4 (time, games_delta) AS
(
SELECT time,
percent - LAG(percent, 1) OVER (PARTITION BY game ORDER BY time DESC) AS games_delta
FROM cte_table3
)
在與LAG()
相同的CTE 中添加聚合GROUP BY
將解決該問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.