with temp0 as (
    select distinct u.user_id
    from users u inner join user_events ue
    on u.user_id = ue.user_id
    where plan_type = "Pro" and date_format(registration_date,"%Y-%m-%d") >= "2025-01-01"
    and date_format(registration_date,"%Y-%m-%d") <= "2025-06-30"
    and event_type = "login" and date_format(event_timestamp,"%Y-%m-%d") >= "2025-01-01"
    and date_format(event_timestamp,"%Y-%m-%d") <= "2025-03-31"
), temp1 as (
    select
        user_id,
        sum(
            case
                when event_type = "create_task" then 5
                when event_type = "export_report" then 10
                when event_type = "invite_member" then 8
                else 1
            end
        ) as total_activity_score
    from user_events ue
    group by user_id
), temp2 as (
    select ue.user_id,round(count(*)/3,2) as avg_monthly_events
    from user_events ue
    where date_format(event_timestamp,"%Y-%m") >= "2025-01"
    and date_format(event_timestamp,"%Y-%m") <= "2025-03"
    group by ue.user_id
)


select concat(user_name,"(",u.user_id,")") as user_profile,total_activity_score,
avg_monthly_events
from temp0 t0 inner join temp1 t1 on t0.user_id = t1.user_id
inner join temp2 t2 on t2.user_id = t1.user_id
inner join users u on u.user_id = t0.user_id
order by total_activity_score desc,avg_monthly_events desc,t0.user_id asc;