select s.date, sum(case when s.is_new_user=1 then 1 else 0 end) as new from (select date, case when date=min(date) over (partition by user_id) then 1 else 0 end as is_new_user from login) as s group by s.date
首先按用户id把第一次登陆日期,即min(date)找出来,即select date,
case when date=min(date) over (partition by user_id) then 1 else 0 end as is_new_user
from login
输出结果如图
实际输出
2020-10-12 | 1 |
2020-10-13 | 0 |
2020-10-12 | 1 |
2020-10-13 | 0 |
2020-10-12 | 1 |
2020-10-14 | 0 |
2020-10-14 | 1 |
2020-10-15 | 0 |
然后基于上述查询结果,求和满足最早登陆日期的天数,以日期进行分组group by

京公网安备 11010502036488号