题解 | #每类视频近一个月的转发量/率#

每类视频近一个月的转发量/率

http://www.nowcoder.com/practice/a78cf92c11e0421abf93762d25c3bfad

有用户互动的最近一个月: 先找最大的那一天,然后between 这一天and (这一天-30)

播放量 就是count(st_time)

思路 先取出最近一个月的数据,然后再进行统计计算

犯的错误是 像max min avg这类函数 如果有group by 的情况下 不一定是固定的值,系统会产生一个问题就是:无法分类

还有一个问题是 如果代码和题解的代码一样 肯定就是那地方的细节问题没有处理好,比如经常犯的多写了些前缀或者忘记加前缀的问题

还有就是一定要注意 round的问题 仔细阅读题目啊!

还有avg的问题 题目真的会给出你该选什么样的函数去计算的啊!

考虑某一天之前的一个月内 或者多少天内,用时差函数真的是一种优解啊 但是思路挺清奇的,感觉需要时间沉淀一些题目才能有这样的思路

#select t1.tag,
 #      sum(t1.if_retweet) as retweet_cut,
  #     sum(t1.if_retweet) / count(t1.start_time) as retweet_rate
#from
#(
 #   select vi.tag,
  #         vl.uid,
   #        vl.video_id,
    #       vl.start_time,
     #      vl.if_retweet
#    from tb_user_video_log vl
 #   join tb_video_info vi using(video_id)
  #  where (vl.if_follow <> 0 or vl.if_like <> 0 or vl.if_retweet <> 0 or vl.comment_id <> 0)
   # and (date_format(vl.start_time,'%Y%m%d') between max(date_format(vl.start_time,'%Y%m%d')) and (max(date_format(vl.start_time,'%Y%m%d')) - 30))
#) t1
#group by t1.tag
#order by retweet_rate desc



# 有用户互动的最近一个月: 先找最大的那一天,然后between 这一天and (这一天-30)
# 播放量 就是count(st_time)  
# 思路 先取出最近一个月的数据,然后再进行统计计算


select vi.tag,
       sum(vl.if_retweet) as retweet_cut,
       round(avg(vl.if_retweet),3) as retweet_rate
#       round(sum(vl.if_retweet) / count(vl.start_time),3) as retweet_rate
from tb_user_video_log vl
join tb_video_info vi using(video_id)
#where (vl.if_follow <> 0 or vl.if_like <> 0 or vl.if_retweet <> 0 or vl.comment_id <> 0)
#and 
#where date_format(vl.start_time,'%Y%m%d') between max(date_format(vl.start_time,'%Y%m%d')) and (max(date_format(vl.start_time,'%Y%m%d')) - 30)
where timestampdiff(day,vl.start_time,(select max(start_time)
                                       from tb_user_video_log
                                                )) <= 29
group by vi.tag
order by retweet_rate desc
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务