思路:新用户即当日登录时间=最早登录时间的人,唯一要注意的是每个日期都要有输出即使当天没有新用户,所以不能用where做筛选(会筛掉数据),需要在count里加条件判断,没有新用户就即为null。
select date, count(if(min_date=date,1,null))
from (
select distinct user_id, date,
min(date)over(partition by user_id) as min_date
from login) as tb1
group by date
order by date