2012-05-31 119 views
0

我正在嘗試計算客戶的「平均終身價值」。意思是,在過去的30天裏,所有客戶在我們的時間內的平均總支出是多少(&)。準確計算LTV

數據表(客戶):

|-----------------------| 
| ID | FirstName | 
|-----------------------| 
    35  John 
    84  Mike 
    90  Cassie 

數據表(tblservice):

|---------------------------------------------------| 
| serviceID | Timing | Total | customerID | 
|---------------------------------------------------| 
     1   3/10/2012 5.00   35 
     2   3/19/2012 5.00   35 
     3   3/20/2012 10.00   35 
     4   3/25/2012 10.00   84 
     5   4/15/2012 10.00   84 

注:表 「客戶」 & 「tblservice」 是一個一對多的關係。

這是我到目前爲止計算每次客戶購買的平均花費。但我不需要它來計算它現在的平均採購成本

我試圖計算每個客戶的平均花費總計。因此,它必須首先將每個客戶的所有購買總額除以客戶總數。

利用上面的表格佈局,它將以((10 + 10)/ 2)= 10.00爲客戶35計算平均壽命值爲((5 + 5 + 10)/ 3)= 6.66 &客戶84。

THEN,以便找到用於客戶羣作爲一個整體平均壽命值,應該平均掉從每個客戶的結果爲:((6.66 + 10)/ 2)= 8.33

請幫助,這裏有兩個查詢至今(一個用於所有的時間和其他過去30天):

SELECT AVG(tblservice.Total) AS LifetimeValue FROM tblservice; 

SELECT AVG(tblservice.Total) AS LifetimeValue FROM tblservice 
WHERE ((tblservice.Timing)>=DateAdd("d",-30,Date())); 
+0

請修改您的問題以添加兩張表格中的簡要數據樣本,並根據這些樣本向我們展示您想要的結果。 – HansUp

+0

我已經在問題中添加了數據樣本和預期結果,以進一步闡明它。 – snooker841

回答

1

您需要首先計算你的每客戶平均,然後取它們的平均值:

select avg(custavg) from (SELECT tblservice.customerid, Avg(tblservice.total) AS custavg FROM tblservice GROUP BY tblservice.customerid); 
+0

這似乎工作得很好,謝謝 – snooker841

0

做一個子查詢,讓每客戶平均:

SELECT 
    AVG(customer_ltv) 
FROM 
    (SELECT 
     customerID, 
     AVG(Total) AS customer_ltv 
    FROM 
     tblservice 
    GROUP BY 
     customerID) avgs 

如果你需要時間過濾,再加入WHERE子句內查詢。