我有一张这样的桌子:
id | Customer | date ----------------------------------------- 1 | Customer2 | 2013-08-01 00:00:00 ----------------------------------------- 2 | Customer1 | 2013-07-15 00:00:00 ----------------------------------------- 3 | Customer1 | 2013-07-01 00:00:00 ----------------------------------------- . | ... | ... ----------------------------------------- n | CustomerN | 2012-03-01 00:00:00
我想计算每个月的“获得”客户、每个月的“流失”客户和每个月的净收益,即使在单独的表/视图中完成。
我怎样才能做到这一点?
编辑
好的,让我展示一下我到目前为止所做的事情。
要选择任何月份的已获得客户,我尝试从以下不存在的 Bookings 表中选择客户:
select Customer
from Bookings
where not exists
(select Customer
from Bookings
where
(Bookings.date BETWEEN
DATE_FORMAT(DATE_SUB(Bookings.date, INTERVAL 1 MONTH), '%Y-%m-01 00:00:00')
AND DATE_FORMAT(Bookings.date, '%Y-%m-01 00:00:00'
)
) AND Bookings.date >= STR_TO_DATE('2010-11-01 00:00:00', '%Y-%m-%d 00:00:00'))
据推测,这会获得存在于“选定”月份但不存在于上一个月份的客户。“2010-11-01”是预订开始日期 + 1 个月。
要选择任何月份的 Lost customers,我尝试从 Bookings 表中选择以下不存在的客户:
select Customer
from Booking
where not exists
(select Customer
from Bookings
where
(Bookings.date BETWEEN
DATE_FORMAT(Bookings.date, '%Y-%m-01 00:00:00')
AND Bookings.date
)
AND Bookings.date >= STR_TO_DATE('2010-11-01 00:00:00', '%Y-%m-%d 00:00:00'
)
)
据说这会获得上个月存在但不在“选定”客户中的客户。
对于“损失”SQL 查询,我得到了空结果!对于“增益”,我得到了数千行,但不确定这是否准确。