#重点就是找到最近一个月,其余都不难(DATE_SUB(MAX(DATE(end_time)), INTERVAL 29 DAY) SELECT tag, SUM(if_retweet) AS retweet_cnt, ROUND(SUM(if_retweet) / COUNT(end_time), 3) AS retweet_rate FROM tb_user_video_log tu JOIN tb_video_info tv ON tu.video_id = tv.video_id WHERE DATE(end_time) >= (SELECT DATE_SUB(MAX(DATE(end_time)), INTERVAL 29 DAY) #找到最近一个月 FROM tb_user_video_log) GROUP BY tag ORDER BY retweet_rate DESC