我在寻找一种可能无法接受的逻辑。
但我的要求是,我想要的客户数量(NewCustomers,repeatCustomers)根据上个月和当月。
就像我想要的这些数据
DATE NAME
2016-01-01 A
2016-01-01 B
2016-01-01 C
2016-01-05 E
2016-01-05 F
2016-01-25 G
2016-01-25 H
2016-02-25 A
2016-02-25 E
2016-02-10 X
2016-02-11 Y
2016-02-13 F输出像这样
MONTH NewCustomer RepeatCustomer CustomerCount of refernece month (Like here is JAN)
FEB 2 3 7接下来的几个月也将如此。
有什么建议吗?谢谢!!
发布于 2016-03-25 10:49:47
我不知道参考月份是什么,但是您可以通过将第一次看到客户和每个月访问的客户组合起来,得到前两列:
select date_format(c.date, '%Y-%m') as yyyymm,
count(distinct c.name) as NumCustomers,
sum(case when date_format(c.date, '%Y-%m') <> date_format(cc.start_date, '%Y-%m')
then 1 else 0
end) as NumRepeatCustomers
from customers c join
(select c.name, min(c.date) as start_date
from customers c
group by c.name
) cc
on c.name = cc.name
group by date_format(c.date, '%Y-%m')
order by yyyymm;https://stackoverflow.com/questions/36218192
复制相似问题