with pro_user_id as (
select distinct
user_id,
user_name
from
users
where registration_date between '2025-01-01' and '2025-06-30'
and plan_type='Pro'
),
login_user_id as (
select distinct
user_id
from
user_events
where date(event_timestamp) between '2025-01-01' and '2025-03-31'
and event_type='login'
),
true_user_id as (
select
p.user_id,
user_name
from
pro_user_id p
inner join
login_user_id l on p.user_id=l.user_id
),
tb_activity_score 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
group by user_id
),
average_event_cnt as (
select
user_id,
count(*)/3 as avg_monthly_events
from
user_events
where date(event_timestamp) between '2025-01-01' and '2025-03-31'
group by user_id
)
select
concat(u.user_name,'(',u.user_id,')') as user_profile,
total_activity_score,
round(avg_monthly_events,2) as avg_monthly_events
from
true_user_id u
inner join
tb_activity_score t on u.user_id=t.user_id
inner join
average_event_cnt a on u.user_id=a.user_id
order by total_activity_score desc,avg_monthly_events desc,u.user_id;