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