WITH recursive tmp AS(
    
-- 查第一次推荐的
SELECT rr.referee_id, m.member_name referee_name, 
    1 referral_level,
    rr.base_reward_points
FROM referral_records rr 
JOIN members m ON rr.referee_id = m.member_id
WHERE rr.referrer_id = (
    -- 查张三
    SELECT member_id
    FROM members
    WHERE member_name = '张三'
) AND join_date BETWEEN ' 2025-01-01' AND '2025-06-30'
UNION ALL
-- 开始递归,寻找下一层
SELECT rr.referee_id, m.member_name,
    referral_level + 1,
    rr.base_reward_points
FROM tmp t
JOIN  referral_records rr ON t.referee_id = rr.referrer_id
JOIN members m ON rr.referee_id = m.member_id
WHERE join_date BETWEEN ' 2025-01-01' AND '2025-06-30'
)
SELECT referee_id, referee_name, referral_level,
    ROUND((base_reward_points)*POW(0.5,referral_level-1),2) actual_points
FROM tmp 
ORDER BY referral_level, actual_points DESC, referee_id