-- 统计在有用户互动的最近一个月(按包含当天在内的近30天算,比如10月31日的近30天为10.2~10.31之间的数据)中,每类视频的转发量和转发率(保留3位小数)。
-- 注:转发率=转发量÷播放量。结果按转发率降序排序。
-- 1、找到最近的一天日期,30天前的日期 2、过滤最近一个月数据 3、分组统计,转发量求和和,播放量总数
SELECT 
    d.tag,
    SUM(IF(c.if_retweet = NULL, 0, c.if_retweet)) retweet_num,
    ROUND(SUM(IF(c.if_retweet = NULL, 0, c.if_retweet)) / COUNT(c.video_id),
            3) retweet_rate
FROM
    tb_user_video_log c
        RIGHT JOIN
    tb_video_info d ON c.video_id = d.video_id
        JOIN
    (SELECT 
        DATE_FORMAT(MAX(start_time), '%Y-%m-%d') et,
            date_format(date_sub(max(start_time),interval 29 day),'%Y-%m-%d') st
    FROM
        tb_user_video_log) b
WHERE
    DATE_FORMAT(c.start_time, '%Y-%m-%d') <= b.et
        AND DATE_FORMAT(c.start_time, '%Y-%m-%d') >= b.st
GROUP BY d.tag
ORDER BY retweet_rate DESC;