Mysql
隨著時間的推移總交易的滾動計數
我需要在每週的時間間隔內獲得一組總交易量。本質上,我需要一個總交易量列。當我按 WEEK(Date) 分組時,我得到了該週的交易量,但還需要獲得該週之前任何時間的交易。
所以假設我有一張這樣的桌子:
TransactionID | Date ---------------|----------- 1 | 8-04-2014 2 | 8-05-2014 3 | 8-18-2014 4 | 8-18-2014 5 | 8-20-2014
我想要一個 select 語句,它可以為我提供類似的東西
TotalTransactionsToDate | Week | Year ------------------------|------|------ 2 | 1 | 2014 5 | 3 | 2014
我正在使用 MySql 5.5.38
您想要的稱為累積和,您可以執行以下操作:
create table transactions (transactionid int, d date); insert into transactions (transactionid, d) values (1, '2014-08-04'),(2,'2014-08-05'), (3, '2014-08-18') , (4, '2014-08-18'), (5,'2014-08-20'); select x.y, x.w, count(1) from ( select distinct year(d) as y, week(d) as w from transactions ) as x join transactions y on year(y.d) < x.y or ( year(y.d) = x.y and week(y.d) <= x.w ) group by x.y, x.w; +------+------+----------+ | y | w | count(1) | +------+------+----------+ | 2014 | 31 | 2 | | 2014 | 33 | 5 | +------+------+----------+
我沒有看到您對 2014 年 2 2 的額外請求。您可以通過替換:
select distinct year(d) as y, week(d) as w from transactions
…用一個表達式創建整個域數週。創建一個日曆表通常是一個好主意,您可以使用它來加入以獲取缺失值等的報告。