select
date,
if(num is null, 0, num)
from(
select distinct date as date
from login
) l2 left outer join (
select
md,
count(*) as num
from (
select
user_id,
min(date) as md
from login
group by user_id
) l1
group by md
) l3 on l2.date=l3.md;