0

我正在尝试计算客户的“平均终身价值”。这意味着所有客户在我们这里的时间以及过去 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

注意:表“customer”和“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()));
4

2 回答 2

1

您需要先计算每个客户的平均值,然后再取平均值:

select avg(custavg) from (SELECT tblservice.customerid, Avg(tblservice.total) AS custavg FROM tblservice GROUP BY tblservice.customerid);
于 2012-06-01T07:02:45.003 回答
0

执行子查询以获取每个客户的平均值:

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

如果您需要按时过滤,则WHERE在内部查询中添加一个子句。

于 2012-06-01T07:17:12.537 回答