1.因为要求出所有日期的人数,所以最外层要group by date ,以此列出所有日期
2.子查询中,查出所有的日期,并按照user_id分组,date的升序排序,这样每个日期会有自己在每个user_id里的序号
3.每个user_id中排序靠前的是最小的日期,也就是新用户,则当这个用户中排名为第一的日期时,计为 1 ,否则不是新用户,计为0




SELECT  a.date,sum(case when a.t_rank=1 then 1 else 0 end)
from 
(
SELECT date,ROW_NUMBER() over(partition by user_id order by date asc)t_rank
FROM login 
)a   
group by date