由于缺少日期,MYSQL数据不匹配

时间:2011-07-28 11:33:38

标签: mysql

我有一个名为customers的表,其中包含以下列

msisdn BIGINT 20
join_date DATETIME

msisdn是识别客户的独特价值。

有一个名为ws_billing_all的第二个表具有以下结构

id  INTEGER  11 (Primary Key)
msisdn BIGINT 20
event_time DATETIME
revenue INTEGER

在此网站上的某人的帮助下,我有以下查询,我用它来确定在特定日期加入的所有客户30天后产生的收入金额。所以输出看起来像这样

JoinedOn     TotalCustomers        TotalRevenue (after 30 days)
Dec 1         150                  21,394   (up to Dec 31)
Dec 2          45                   4,182   (up to Jan 1)
Dec 3          83                   6,829   (up to Jan 2)

我正在使用的查询如下;

SELECT date(c.join_date) JoinedOn,
       count(c.msisdn) TotalCustomers,
       SUM(w.revenue) TotalRevenue
FROM customers c
JOIN ws_billing_all w 
ON c.msisdn = w.msisdn
AND date(w.event_time ) <= date_add(c.join_date, INTERVAL 30 DAY )
where c.join_date >= 20071129000000
group by date( c.join_date )
order by date( c.join_date )

因此,查询会产生正确的收入,但总客户数字不正确。我最终认为这个(我相信)的原因是客户中有一些日期没有客户加入,这导致了不正确的数据。

考虑到客户中缺少日期,有人可以建议我如何生成正确的数据吗?

1 个答案:

答案 0 :(得分:0)

在考虑之后......可能是由于并非所有已加入订单的客户都被排除在外,因此他们被排除在外......更改为LEFT JOIN到结算表

FROM customers c
   LEFT JOIN ws_billing_all w