mysql php的客户终身价值

mysql php的客户终身价值,php,mysql,Php,Mysql,我花了一个星期的时间试图弄明白这一点,它结合了各种来源的东西,在某种程度上是有效的,但还没有完全有效 基本上,我有一个订单表,我试图根据客户的第一个订单日期对其进行分组,然后显示该组到目前为止的总花费 这是我的SQL查询: SELECT DISTINCT email, billing_name, FORMAT(SUM(total),2) AS total, DATE_FORMAT(MIN(orderdate), '%Y-%m') AS firstorder, DATE_FORMAT(MAX(or

我花了一个星期的时间试图弄明白这一点,它结合了各种来源的东西,在某种程度上是有效的,但还没有完全有效

基本上,我有一个订单表,我试图根据客户的第一个订单日期对其进行分组,然后显示该组到目前为止的总花费

这是我的SQL查询:

SELECT DISTINCT email, billing_name,
FORMAT(SUM(total),2) AS total,
DATE_FORMAT(MIN(orderdate), '%Y-%m') AS firstorder,
DATE_FORMAT(MAX(orderdate), '%Y-%m') AS lastorder
FROM orders
GROUP BY email
ORDER BY firstorder ASC
对于PHP,我正在做:

$rows = array();
while($row = mysql_fetch_array($query))
$rows[] = $row;
foreach($rows as $row) {
    $currMonth = $row['firstorder'];
    $total += $row['total'];
    if ($currMonth != $prevMonth) {
            echo $currMonth.' = $'.$total';
            $prevMonth = $currMonth;
            $total = 0;
        }
    }
这给了我一个类似的列表:

    2010-05 = $230.49
    2010-06 = $557.32
    2010-08 = $223.38
但是这些数字加起来不一样,我做错了什么?我怎样才能显示一个团队在其他几个月里花了多少钱?这就是我最终想要展示数据的方式


请帮忙!谢谢

取决于您真正想要什么以及您的数据是什么样子的

如果数据如下所示:

email          |BILLING NAME|Total  |OrderDate
----------------------------------------------
john@gmail.com |John Smith  |200.00 |15/05/2010
john@gmail.com |John Smith  | 15.49 |19/10/2010
john@gmail.com |Rico Swavez | 15.00 |10/08/2010
jane@gmail.com |Jane Doe    |250.00 |23/06/2010
jane@gmail.com |Jane Doe    |307.32 |27/10/2010
juan@gmail.com |Juan Valdez |223.38 |30/08/2010
然后

SELECT email, billing_name,
FORMAT(SUM(total),2) AS total,
DATE_FORMAT(MIN(orderdate), '%Y-%m') AS firstorder,
DATE_FORMAT(MAX(orderdate), '%Y-%m') AS lastorder
FROM orders
GROUP BY email, billing_name
ORDER BY firstorder ASC
会回来的

EMAIL          | BILLING NAME |TOTAL |FIRSTORDER | LASTORDER 
------------------------------------------------------------
john@gmail.com | John Smith   |215.49|2010-05    | 2010-10
jane@gmail.com | Jane Doe     |557.32|2010-06    | 2010-10
john@gmail.com | Rico Swavez  | 15.00|2010-08    | 2010-08
Juan@gmail.com | Juan Valdez  |223.38|2010-08    | 2010-08

首先在mysql中运行您的查询您是否得到了想要的结果?如果不是,那么问题在于SQL,而不是PHP。如果SQL返回的是您想要的内容,那么问题就出在PHP中,下面的查询应该可以做到这一点:

SELECT 
    FORMAT(SUM(z.`totalSpent`),2) AS cohortRevenueToDate, 
    z.`firstOrderMonth`,
    GROUP_CONCAT(`email`) 
FROM 
(
    SELECT 
        `email`,
        SUM(`total`) AS totalSpent, 
        DATE_FORMAT(MIN(`orderdate`), '%Y-%m') AS firstOrderMonth 
    FROM `orders`
    GROUP BY `email`
) AS z
GROUP BY z.`firstOrderMonth`
ORDER BY z.`firstOrderMonth` ASC

我已经加入了一个小组讨论,以防你对每个小组的组成感兴趣。

嘿,伙计,谢谢你关注这个。是的,我忘了提到我不能用sql解决这个问题,所以我试着用php解决这个问题。是的,我想一次订购一组。下面是我真正想对sql进行的操作:按客户的第一个订单日期对他们进行分组,并查看每个组在其他月份的花费。好的,让我们谈谈您想要的输出是什么,因为我还没有得到它。是否要基于月/年显示用户的总购买量,并仅显示第一个月的总购买量?(是/否)或者您是否试图提供所有购买的所有电子邮件总计,但仅显示第一次购买的日期?我还不确定你在找什么。使用样本输入的样本输出有助于解释问题:输入-->过程-->输出。。如果我知道输入,我知道输出,我可以导出过程(有时)。我想在客户的第一个订单日期对他们进行分组,看看他们在几个月内花了多少钱,并将总数相加。有关我想要的输出,请访问此网站。我想显示每个月的总数图表。