准确计算LTV

时间:2012-05-31 22:06:29

标签: sql ms-access count

我正在尝试计算客户的“平均生命周期价值”。这意味着所有客户在与我们合作期间的平均总支出是多少?还有前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()));

2 个答案:

答案 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子句。