SELECT tag, SUM(if_retweet), ROUND(SUM(if_retweet)/ COUNT(*),3) retweet_rate
FROM tb_user_video_log,tb_video_info 
WHERE tb_user_video_log.video_id=tb_video_info.video_id 
AND TIMESTAMPDIFF(DAY, start_time, (SELECT MAX(start_time) FROM tb_user_video_log)) < 30
GROUP BY tag
ORDER BY retweet_rate DESC;

首先是题意,视频播放日期start_time和整体的日期最大值之差小于30的,叫做“视频在有用户互动的最近一个月”。 第二,mark一下,上面要写成(SELECT MAX(start_time) FROM tb_user_video_log),而不能直接写MAX(start_time)。where后面不能跟集函数。顺便说一句,having后面倒是常跟集函数。