我有一個如下所示的表格,它只記錄當天的總余額:
-------- ------------ --------
| id | date | wallet |
---- --------- ---------- -----
| 10056 | 2022-03-01 | 120 |
| 10056 | 2022-03-02 | 40 |
| 10056 | 2022-03-04 | 80 |
| 10056 | 2022-03-08 | 23 |
| 13572 | 2022-03-01 | 20 |
| 13572 | 2022-03-03 | 17 |
-------- ------------ --------
我想知道是否可以只計算支出?我只能考慮使用'CASE'來停止計算比昨天小的數字,但我不知道如何逐行計算減號。這應該是結果:
-- March Spending per user
--------- ---------
| id | spend |
--------- ---------
| 10056 | 103 |
| 13572 | 3 |
--------- ---------
我不確定我的 SQL 概念是否正確。
uj5u.com熱心網友回復:
一種選擇是計算連續錢包值之間的差異,然后排除負值(因為它們是錢包收入而不是支出)并總結。檢查以下查詢:
WITH cte AS (
SELECT *,
wallet - LEAD(wallet) OVER(PARTITION BY id
ORDER BY date) AS diff
FROM balances
)
SELECT id,
SUM(diff)
FROM cte
WHERE diff > 0
GROUP BY id
在這里試試。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483424.html
