我有一個非常棘手的 SQL 問題,也許是我遇到的最棘手的問題,假設我在下面有一張表
稱為 table_1
| 日期 | 花費 |
|---|---|
| 10月20日 | 50 |
| 10 月 19 日 | 40 |
| 10 月 18 日 | 50 |
| 10 月 17 日 | 60 |
| 10 月 16 日 | 50 |
現在我需要另一個表格來總結我之前所做的所有支出,并包括每個日期。喜歡展示我迄今為止為每個日期花費的一切。
并且對于每個日期。
下面是我想要計算的表格
稱為 table_2
| 日期 | 花費 |
|---|---|
| 10月20日 | 250(之前所有支出的總和,包括 10 月 20 日) |
| 10 月 19 日 | 200(之前所有支出的總和,包括 10 月 19 日) |
| 10 月 18 日 | 160(之前所有支出的總和,包括 10 月 18 日) |
| 10 月 17 日 | 110(之前所有支出的總和,包括 10 月 17 日) |
| 10 月 16 日 | 50(之前所有支出的總和,包括 10 月 16 日) |
我已經嘗試在 date_1 <= date_2 上使用 table_1 left join 與 left join 本身。
不起作用。
有人可以給我一個提示嗎?
uj5u.com熱心網友回復:
你想要一個運行總數。您可以通過 windw 函式獲得此資訊SUM OVER。
select date, sum(spend) over(order by date) as sum_spent
from mytable
order by date desc;
如果你不得不使用不支持視窗函式的舊 MySQL 版本,這里有一個老式的替代方案:
select
date,
(select sum(spend) from mytable t2 where t2.date <= t.date) as sum_spent
from mytable t
order by date desc;
uj5u.com熱心網友回復:
補充 Thorsten Kettner 的回答,LEFT JOIN你已經嘗試過也有效
SELECT a.date, SUM(b.spend)
FROM table_1 a
LEFT JOIN table_1 b ON a.date >= b.date
GROUP BY a.date
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331485.html
