我有一个名为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 )
因此,查询会产生正确的收入,但总客户数字不正确。我最终认为这个(我相信)的原因是客户中有一些日期没有客户加入,这导致了不正确的数据。
考虑到客户中缺少日期,有人可以建议我如何生成正确的数据吗?
答案 0 :(得分:0)
在考虑之后......可能是由于并非所有已加入订单的客户都被排除在外,因此他们被排除在外......更改为LEFT JOIN到结算表
FROM customers c
LEFT JOIN ws_billing_all w