又是离成功只差一点,这次一开始只写出了FROM后子查询的内容,发现输出与答案不符合,想了好久发现WHERE子句要写在子查询外才能输出正确结果。
除此之外还要注意滑动窗口函数rows between的用法和日期范围筛选是between and而不是between()。
这个题很绕还需要多加思考复习。
SELECT tag,dt,sum_like_cnt_7d,max_retweet_cnt_7d
FROM(SELECT tag,dt,
sum(like_cnt)over(partition by tag rows between 6 preceding and current row) sum_like_cnt_7d,
max(retweet_cnt)over(partition by tag rows between 6 preceding and current row) max_retweet_cnt_7d
FROM (SELECT
tag, date(start_time) dt,
sum(CASE WHEN if_like=1 THEN 1 ELSE 0 END) like_cnt,
sum(CASE WHEN if_retweet=1 THEN 1 ELSE 0 END) retweet_cnt
FROM tb_user_video_log t1
LEFT JOIN tb_video_info t2 ON t1.video_id=t2.video_id
WHERE date(start_time) BETWEEN '2021-09-25' AND'2021-10-03'
GROUP BY tag,date(start_time)) a
ORDER BY tag DESC,dt) b
WHERE dt BETWEEN '2021-10-01' AND '2021-10-03';