【问题标题】:Calculating LTV Accurately准确计算 LTV
【发布时间】:2012-05-31 22:06:29
【问题描述】:

我正在尝试计算客户的“平均生命周期价值”。意思是所有客户在我们这里的时间以及过去 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()));

【问题讨论】:

  • 请编辑您的问题以添加两个表格中的简要数据样本,并根据这些样本向我们展示您想要的结果。
  • 我已经在问题中添加了数据样本和预期结果,以进一步澄清它。

标签: sql ms-access count


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    执行子查询以获得每位客户的平均值:

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

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

    【讨论】:

      猜你喜欢
      • 2020-12-11
      • 2021-05-10
      • 2017-07-24
      • 2016-11-29
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      • 2019-08-06
      相关资源
      最近更新 更多