当前位置: 首页 > news >正文

牛客网SQL156

各个视频的平均完播率_牛客题霸_牛客网

方法一

select a.video_id,format(count(b.video_id)/count(a.video_id),3) 完播率
from
(select uid,video_id,(end_time-start_time) 播放时长from tb_user_video_logwhere year(start_time)=2021 or year(end_time)=2021
) a left join tb_video_info b
on a.video_id=b.video_id and a.播放时长>=b.duration
group by a.video_id
order by 完播率 desc

方法二

select a.video_id,format(count(c.video_id)/a.播放次数,3) 完播率
from
(select video_id,count(*) 播放次数from tb_user_video_logwhere year(start_time)=2021 or year(start_time)=2021group by video_id
) a
join
(select video_id,end_time-start_time 播放时长from tb_user_video_logwhere year(start_time)=2021 or year(start_time)=2021
) b
on a.video_id=b.video_id
left join
(select video_id,duration 视频时长from tb_video_info
) c
on b.video_id=c.video_id and b.播放时长>=c.视频时长
group by a.video_id
order by 完播率 desc

方法二注意不能用where ,否则2002年完播率为0会直接被过滤掉,最后的结果都没有2002

要用left join,然后最后count时选择count的对象很重要,要count(c.video_id)

http://www.lryc.cn/news/169785.html

相关文章:

  • 【MongoDB】docker部署社区版(一)
  • 【Graph Net学习】GNN/GCN代码实战
  • RocketMQ 发送顺序消息
  • 【面试经典150 | 双指针】判断子序列
  • 自动驾驶信息安全方案
  • 【云原生】kubernetes中pod(最小的资源管理组件)
  • [DB]数据库--lowdb
  • Kotlin | 在for、forEach循环中正确的使用break、continue
  • 【C++】详解std::mutex
  • Matlab图像处理-Lab模型
  • 分布式ETL工具Sqoop实践
  • 展会预告 | 图扑邀您共聚 IOTE 国际物联网展·深圳站
  • 如何下载安装 WampServer 并结合 cpolar 内网穿透,轻松实现对本地服务的公网访问
  • iOS添加Mapbox地图库
  • destoon根据目录下的html文件生成地图索引
  • gRPC之gRPC流
  • Kafka Shell命令交互
  • 什么是回归测试?
  • ZTMap是如何在相关政策引导下让建筑更加智慧化的?
  • Python:函数和代码复用
  • three.js——模型对象的使用材质和方法
  • sql explain
  • 【LeetCode-简单题】剑指 Offer 05. 替换空格
  • 数字虚拟人制作简明指南
  • Nginx 文件解析漏洞复现
  • Lombok依赖
  • XML 和 JSON 学习笔记(基础)
  • L1-005 考试座位号分数 15
  • 无涯教程-JavaScript - CEILING.MATH函数
  • ChatGPT提示词(prompt)资源汇总