#新简化写法

select 
t.login_date as dt,
count(distinct uid) as total_user_num,
concat(
ifnull(
round(
(
count(distinct case when t.m=1 then uid end)/count(distinct uid)
)*100,1),0),"%") as new_user_rate
from(
select
uid,
login_date,
row_number()over(partition by uid order by login_date) as m 
from user_login_tb
group by uid,login_date
) as t 
group by t.login_date
order by t.login_date