统计每个日期登录新用户个数。
1、查找新用户,即对于user_id,其登录的最小日期,则为新用户

select
  user_id,
  min(date)
from login
group by user_id

2、统计每个日期登录的新用户个数
首先,统计每个日期登录的用户个数,如下

select
  date,
  count(*)
from login
group by date

其次,在以上基础上指定新用户的条件,以user_id,date两者作为筛选条件即可找出

select
  date,
  count(distinct 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
order by date

3、但2作为结果,只能通过1个实例,比如某日没有新用户登录,则该日期会被过滤不显示,而根据题目要求,应该显示为0,因此可以使用case when语句,即最终结果如下:

select
  date,
  sum(case when (user_id, date) in (    # 注意此处使用sum而非使用count
                          select
                            user_id,
                            min(date)
                          from login
                          group by user_id) then 1 else 0 end) as new
from login
group by date
order by date