题解 | #每类视频近一个月的转发量/率#
每类视频近一个月的转发量/率
http://www.nowcoder.com/practice/a78cf92c11e0421abf93762d25c3bfad
易错点
用max()over()的时候后面不要partition by,更不要order by
- order by 的作用是求累计最大值
如第一行对应的是其本身,第二行对应前两个数据中的最大值
- partition by 的作用是分类
这里涉及到题意理解的问题。我本来以为是每个视频以自身最近一次播放的日期为基准,后来才发现是以所有视频最近一次播放的日期为基准,故不用再partition了
select tag,sum(if_retweet) as retweet_cut,
round(avg(if_retweet),3) as retweet_rate
from
(select *,max(date(start_time)) over () as
latest_time
from tb_user_video_log )as vl
join tb_video_info as vi
on vl.video_id=vi.video_id
where date_sub(latest_time,interval 30 day)<date(start_time)
group by tag
order by retweet_rate desc