select
    p.player_id,
    p.username,
    p.level as current_level,
    case when p.level >= 30 then "高阶玩家" else "新秀玩家" end as player_category,
    t.sum_cost as total_april_spending
from
    players p
join
    (
        select
            player_id,
            count(*) as cnt,
            sum(cost) as sum_cost
        from
            transactions
        where
            purchase_time >= '2025-04-01' and purchase_time<'2025-05-01' 
        group by
            player_id
    ) t on p.player_id = t.player_id
where
    p.creation_date>='2025-03-01' and p.creation_date<'2025-04-01'
order by
    player_category desc,total_april_spending desc,player_id