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