我正在尝试计算客户的“平均生命周期价值”。这意味着所有客户在与我们合作期间的平均总支出是多少?还有前30天的时间。
表格(客户)中的数据:
|-----------------------|
| 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”处于一对多的关系中。
这是我到目前为止所计算的每次客户购买时的平均花费。但我不需要它来计算现在的平均购买成本
我正在尝试计算每位客户总支出的平均值。因此,它必须首先完成每个客户的所有购买,然后除以客户总数。
使用上面的表格布局,它将计算客户35的平均寿命值为((5 + 5 + 10)/ 3)= 6.66&客户84为((10 + 10)/ 2)= 10.00。
那么为了找到整个客户群的平均寿命值,它应该将每个客户的结果平均为:((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 :(得分:1)
您需要先计算每位客户的平均值,然后将其平均值:
select avg(custavg) from (SELECT tblservice.customerid, Avg(tblservice.total) AS custavg FROM tblservice GROUP BY tblservice.customerid);
答案 1 :(得分:0)
执行子查询以获得每位客户的平均值:
SELECT
AVG(customer_ltv)
FROM
(SELECT
customerID,
AVG(Total) AS customer_ltv
FROM
tblservice
GROUP BY
customerID) avgs
如果您需要按时过滤,请在内部查询中添加WHERE
子句。