牛客网sql笔试bug_sql语句面试题及答案

牛客网sql笔试bug_sql语句面试题及答案01 某音短视频 SQL156 各个视频的平均完播率 【描述】用户-视频互动表tb_user_video_log。(uid-用户ID, video_id-视频ID, start_time-开

牛客SQL刷题第三趴——SQL大厂面试真题

01 某音短视频

SQL156 各个视频的平均完播率

【描述】用户-视频互动表tb_user_video_log。(uid-用户ID, video_id-视频ID, start_time-开始观看时间, end_time-结束观看时间, if_follow-是否关注, if_like-是否点赞, if_retweet-是否转发, comment_id-评论ID)

短视频信息表tb_video_info。(video_id-视频ID, author-创作者ID, tag-类别标签, duration-视频时长(秒), release_time-发布时间)

【问题】计算2021年里有播放记录的每个视频的完播率(结果保留三位小数),并按完播率降序排序

注:视频完播率是指完成播放次数占总播放次数的比例。简单起见,结束观看时间与开始播放时间的差>=视频时长时,视为完成播放。
select t.video_id,
ROUND(sum(if((t.end_time-t.start_time)>=t1.duration,1,0))/count(start_time),3) as avg_comp_play_rate
from tb_user_video_log t 
left join tb_video_info t1
on t.video_id=t1.video_id
where year(t.start_time)="2021"
group by t.video_id
order by avg_comp_play_rate desc;

 解题思路:①、考察多表结合。

②、视频完播率的计算方法。

第1步:先计算完成播放次数。sum(if((t.end_time-t.start_time)>=t1.duration,1,0

第2步:计算总播放次数。count(start_time)

第3步:保存三位小数。使用ROUND(xx,3)

③、where子条件,筛选2021年,使用year函数

④、order by排序,按照完播率降序,使用desc。

 

SQL157 平均播放进度大于60%的视频类别

【描述】同上题

问题:计算各类视频的平均播放进度,将进度大于60%的类别输出。

注:播放进度=播放时长÷视频时长*100%,当播放时长大于视频时长时,播放进度均记为100%。

结果保留两位小数,并按播放进度倒序排序。

select t1.tag,
concat(ROUND(avg(if(timestampdiff(second,t.start_time,t.end_time)>=t1.duration,1,
             timestampdiff(second,t.start_time,t.end_time)/t1.duration))*100,2),"%") as avg_play_progress
from tb_video_info t1
join tb_user_video_log t
on t1.video_id=t.video_id
group by t1.tag
having avg_play_progress>60
order by avg_play_progress desc;

解题思路:

1、播放进度结算

①、时间差函数,timestampdiff(unit,char(begin-end))

②、判断,if或者用case when

③、结果保留两位小数,使用round(xx,2)

④、使用concat拼接数值和“%”

2、多表的内连接。

3、进度大于60%的类别输出,因为这个数值是聚合函数,需要使用having函数

4、并按播放进度倒序排序。使用order by desc

原文地址:https://www.cnblogs.com/ruoli-121288/archive/2022/07/14/16478336.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5017.html

(0)
上一篇 2023-05-26
下一篇 2023-05-26

相关推荐

  • 深入了解Python中的首字母大写函数 – capitalize()

    深入了解Python中的首字母大写函数 – capitalize()Python是一门强大的编程语言,它提供了许多内置函数,以便您轻松地操作字符串和其他数据类型。其中,capitalize()函数是一个非常有用的函数,它可以将字符串的第一个字母转换为大写,而其他字母都转换为小写。

    2024-05-06
    69
  • Python循环语句:重复执行指定的代码块

    Python循环语句:重复执行指定的代码块a href=”https://beian.miit.gov.cn/”苏ICP备2023018380号-1/a Copyright www.python100.com .Some Rights Reserved.

    2024-03-04
    77
  • IM及时通讯软件openfire+mysql+openldap+spark

    IM及时通讯软件openfire+mysql+openldap+spark业务场景:对于安全注重和可控性更强的企业,自己搭建聊天系统是很多企业选择,功能大概类似微信,QQ,阿里旺旺等,目前及时通讯软件很多,比如商业的腾讯通,开源的基于XMPP开源协议的也很多,但是发现国内…

    2023-03-25
    159
  • 滴滴数据驱动利器:AB实验之分组提效「建议收藏」

    滴滴数据驱动利器:AB实验之分组提效「建议收藏」桔妹导读:在各大互联网公司都提倡数据驱动的今天,AB实验是我们进行决策分析的一个重要利器。一次实验过程会包含多个环节,今天主要给大家分享滴滴实验平台在分组环节推出的一种提升分组均匀性的新方法。本文首先

    2023-03-06
    157
  • 150 opening binary mode data_bad central directory offset

    150 opening binary mode data_bad central directory offsetalert日志报错: 2019-11-18T07:15:12.704938+08:00Errors in file /u01/app/oracle/diag/rdbms/sibcyb1/SIBCYB1

    2022-12-19
    180
  • hadoop 实时计算_flink写入hdfs

    hadoop 实时计算_flink写入hdfs一、概述 Flink核心是一个流式的数据流执行引擎,并且能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用。其针对数据流的分布式计算提供了数据分布,数据通信及容错机制等功能。基于流执行

    2023-05-15
    154
  • 用Python的pandasdatareader获取金融市场数据

    用Python的pandasdatareader获取金融市场数据pandasdatareader是一个使用Python语言获取数据的库,主要通过pandas库对Yahoo Finance、Google Finance、World Bank等数据源进行操作。pandasdatareader支持多个金融数据源,可以使用一个API来获取多个数据源的数据信息,使得数据的获取更加方便。

    2024-08-11
    31
  • 数据库2.0_1.12数据库

    数据库2.0_1.12数据库数据库2.0 ‘MySQL存储引擎介绍’ ‘MySQL基础数据类型’ ‘MySQL表的完整性约束’ ‘MySQL数据库初识’ ‘MySQL的库表详细操作’ ‘MySQL的逻辑查询语句的执行

    2022-12-28
    152

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注