select
t.player_id,
p.username,
p.level as current_level,
case when p.level >=30 then '高阶玩家' else '新秀玩家' end as player_category,
round(sum(cost), 2) as total_april_spending
from transactions t
left join players p
on t.player_id = p.player_id
where p.creation_date between '2025-03-01' and '2025-03-31'
and t.purchase_time between '2025-04-01' and '2025-04-30'
group by 1,2,3,4
having sum(cost) > 0
order by player_category desc, total_april_spending desc, player_id asc
;