select p.player_id, p.username, p.level as current_level,
(case when p.level >= 30 then '高阶玩家' else '新秀玩家' end) as player_category, 
l.total_april_spending
from players p 
join (
select p.player_id, p.username, round(sum(t.cost), 2) as total_april_spending
from players p join transactions t on p.player_id = t.player_id
where date_format(p.creation_date, '%Y-%m') = '2025-03' 
and date_format(t.purchase_time, '%Y-%m-%d') between '2025-04-01' and '2025-04-30'
group by p.player_id, p.username
having count(t.purchase_time) >= 1) l on p.player_id = l.player_id
order by player_category desc, l.total_april_spending desc, p.player_id