2011-10-12 63 views
1

我想使用一個mysql查詢來計算流失......我可以在PHP中執行此操作,但是如果mysql可以執行此操作,它會非常有幫助。mysql參考上一行

這裏是我的查詢:

SELECT 
    bill_date_bil, 
    account_number_bil, 
SUM(amount_bil) 


FROM 
    billing_bil 
WHERE account_number_bil = 20017 
    AND type_bil <> 'CA' 
    AND type_bil <> 'CK' 
GROUP BY period (bill_date_bil) 
ORDER BY bill_date_bil ASC 

和這裏就是我得到:

bill_date_bil account_number_bil sum(amount_bil) 
------------- ------------------ --------------- 
2007-09-01     20017  3498.5000 
2007-10-01     20017  8248.5000 
2007-11-01     20017  9886.0000 
2007-12-01     20017  9411.0000 
2008-01-01     20017  9411.0000 
2008-02-01     20017  9411.0000 
2008-03-01     20017  -6151.5000 
2008-04-01     20017  6118.5400 
2008-05-01     20017  11171.9800 
2008-06-01     20017  6434.3800 
2008-07-01     20017  6434.3800 

我想有另一列,讓我當前賬和前幾個月法案之間的差異。

想法?

這裏就是我需要:

bill_date_bil account_number_bil sum(amount_bil) churn 
------------- ------------------ --------------- 
9/1/2007 20017 3498.5       0 
10/1/2007 20017 8248.5      4750 
11/1/2007 20017 9886       1637.5 
12/1/2007 20017 9411      -475 
1/1/2008 20017 9411       0 
2/1/2008 20017 9411       0 
3/1/2008 20017 -6151.5      -15562.5 
4/1/2008 20017 6118.54       12270.04 
5/1/2008 20017 11171.98       5053.44 
6/1/2008 20017 6434.38       -4737.6 
7/1/2008 20017 6434.38       0 
+0

也許有點幫助:http://stackoverflow.com/questions/5078987/calculate-deltadifference-of-current-和以前的行式-SQL – Igor

回答

2

使用此:

SET @sum_bill=0; 
SELECT 
    bill_date_bil, 
    account_number_bil, 
SUM(amount_bil), 
@sum_bill := @sum_bill+SUM(amount_bil) 


FROM 
    billing_bil 
WHERE account_number_bil = 20017 
    AND type_bil <> 'CA' 
    AND type_bil <> 'CK' 
GROUP BY period (bill_date_bil) 
ORDER BY bill_date_bil ASC