知识点

  1. 建立窗口函数排序作为一个新表,然后按照日期进行分组。因为有可能同一人在一天内用不同设备多次登录的情况,所以排序使用row——number只会出现一个1
  2. 一开始想的是计数count,但是当天没有新用户会直接没有记录,所以使用case when然后使用sum进行计数
  3. 需要注意的小细节就是每一个表都需要有自己的名字

代码

select date, sum(case when r = 1 then 1
                    else 0 end) as new
from(
    select user_id, date, row_number() over(partition by user_id order by date) as r
    from login
    ) as ln
group by date
order by date