忽略了统计数为0的情况(错误写法)
-- 构造出一个新的表,以用户ID分组,然后过滤出每组中最小的日期
-- 根据上表然后在进行统计
-- 出现的问题:没法统计新用户为0的日期
select `new_login`.`date`,count(`new_login`.`id`) as `new`
from
(
select *
from `login`
group by `user_id`
having min(`date`)
) as `new_login`
group by `new_login`.`date`
order by `new_login`.`date` asc
union连接写法,这种容易懂一些
SELECT `date`, COUNT(`user_id`) AS `NEW`
FROM `login`
WHERE (`user_id`, `date`) IN
(SELECT `user_id`, min(`date`)
FROM `login`
GROUP BY `user_id`)
GROUP BY `date`
UNION
SELECT `date`, 0 AS `NEW`
FROM `login`
WHERE `date` NOT IN(SELECT min(`date`)
FROM `login`
GROUP BY `user_id`)
ORDER BY `date`;