各个视频的平均完播率

各个视频的平均完播率

select v.video_id,
round(avg(case when timestampdiff(second,start_time,end_time)>= duration then 1 else 0 end),3) avg_comp_play_rate
from tb_user_video_log u left join tb_video_info v on v.video_id=u.video_id
where date_format(start_time,'%Y')=2021
and date_format(end_time,'%Y')=2021
group by v.video_id
order by avg_comp_play_rate desc

用到的函数:

  1. round用法:round(expr, d)
  2. case when...then...else...end
  3. date_format()
  4. avg用法:avg(expr)
  5. timestampdiff用法:
TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) 

interval:指定时间参数

  • year 年
  • month 月
  • quarter 季度
  • week 周
  • day 日
  • hour 小时
  • minute 分钟
  • second 秒

备注: 第一次做的时候,以为要经过好多次join,先计算分母(每个id有多少行),然后计算分子(完整看完的),然后分子分母再要join起来计算。 但是发现可以用case when语句完美解决我的困扰。牛~

全部评论

相关推荐

04-03 12:09
東京大学 C++
点赞 评论 收藏
分享
03-26 15:18
已编辑
华北水利水电大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务