簡體   English   中英

使用窗口函數 lag() 計算百分比變化

[英]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 BYORDER 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.

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