WITH RECURSIVE tmp AS(
    -- 找到根节点
    SELECT cs.share_id root_share_id, account_name root_account_name,
        cs.share_id cur_share_id,
        cs.sharer_account_id cur_share_account_id,
        0 depth,
        play_seconds
    FROM podcast_accounts pa 
    JOIN clip_share_events cs ON cs.sharer_account_id = pa.account_id
    WHERE parent_share_id IS NULL AND DATE(	share_time) BETWEEN '2025-07-01' AND '2025-07-07'
        AND clip_id = '9001'
    -- 开始根据根节点的分支迭代
    UNION ALL
    SELECT root_share_id, root_account_name,
        cs.share_id cur_share_id,
        cs.sharer_account_id cur_share_account_id,
        depth + 1,
        cs.play_seconds
    FROM tmp t  
    JOIN clip_share_events cs ON cs.parent_share_id= t.cur_share_id
    WHERE clip_id ='9001'
)


SELECT root_share_id, root_account_name, COUNT(cur_share_id) total_share_count,
    MAX(depth) max_depth,
    SUM(CASE WHEN NOT EXISTS (SELECT * FROM clip_share_events cs 
        WHERE tmp.cur_share_id = cs.parent_share_id	) THEN 1 ELSE 0 END) leaf_share_count,
    COUNT(DISTINCT cur_share_account_id) distinct_account_count,
    ROUND(SUM(play_seconds)/60,2) total_play_minutes
FROM tmp 
GROUP BY 1,2 
ORDER BY 4 DESC, 6 DESC, 3 DESC, 1