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

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

解题思路:

1、播放进度结算

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

②、判断,if或者用case when

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

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

2、多表的内连接。

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

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

【描述】用户-视频互动表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-发布时间)

问题:统计在有用户互动的最近一个月(按包含当天在内的近30天算,比如10月31日的近30天为10.2~10.31之间的数据)中,每类视频的转发量和转发率(保留3位小数)。

注:转发率=转发量÷播放量。结果按转发率降序排序。

select t1.tag,
sum(t.if_retweet) as retweet_cut,-- 转发量
round(sum(t.if_retweet)/count(t.video_id),3) as retweet_rate
from tb_video_info t1
left join tb_user_video_log t
on t.video_id=t1.video_id
where date(start_time)>(select date_sub(MAX(start_time),interval 30 day) from tb_user_video_log)
group by t1.tag
order by retweet_rate desc;

解题思路:

转发量:sum(if_reweet)

转发率:转发量/播放量。也就是sum(if_reweet)/count(video_id)。结果保留3位小数,就是用ROUND(转发率,3)即可

最近30天:

写法①、date_sub函数(时间向前推移函数)

(select date_sub(MAX(start_time),interval 30 day) from tb_user_video_log ——这一步的意思是以最新的播放日期为准,向前推移30天。

写法②、timestampdiff函数(时间差函数)

timestampdiff(date,t.start_time,(select max(t.start_time) from tb_user_video_log)

Original: https://www.cnblogs.com/ruoli-121288/p/16478336.html
Author: 徐若离
Title: 牛客SQL刷题第三趴——SQL大厂面试真题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622325/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 摸鱼系列之idea摸鱼插件推荐

    前言 作为一枚程序员,上班时候正撸着代码呢,撸不出代码了,没灵感了,看需求念头不通达了,脑瓜里蹦不出一丁点火花了,这时候怎么办?程序在运行,还要好几分钟,等待时间里,白白浪费了,玩…

    数据库 2023年6月16日
    0112
  • gitlab-runner浅谈——【git fetch-pack: expected shallow list】解决方法

    配置完gitlab-runner后执行job总是失败,如下: 解决方法 分析原因发现是git的版本太低了,我用的是系统自带的1.8.3的版本。后来更新为:2.31.1 后job可以…

    数据库 2023年6月11日
    068
  • EasyExcel导入导出excel工具类

    easyexcel依赖 com.alibaba easyexcel 1.1.2-beat1 工具类 package com.example.demo.files; import c…

    数据库 2023年6月11日
    093
  • MySQL的Explain总结

    Explain简介 MySQL优化器在基于成本的计算和基于规则的SQL优化会生成一个所谓的 执行计划,我们就可以使用执行计划查看MySQL对该语句具体的执行方式。 介绍这个好啰嗦就…

    数据库 2023年5月24日
    068
  • 新建vue项目

    1、CMD中输入命令行 vue ui 打开一个创建项目的窗口 2、安装插件element ui 3、Idea 打开这个项目即可 4、Idea 运行vue项目 npm run ser…

    数据库 2023年6月9日
    092
  • javax.mail.MessagingException: Unknown SMTP host: smtp.163.com;

    报错信息如下: javax.mail.MessagingException: Unknown SMTP host: smtp.163.com;nested exception is…

    数据库 2023年6月11日
    060
  • 2022CNAS能力验证-存在性

    背景 警方接到报案称有人利用无人机投放非法宣传材料,根据线索找到一处住宅,搜查发现无人机、智能电视机、小型网络设备等电子设备,提取了电子设备数据并对网络设备进行了抓包分析。现委托你…

    数据库 2023年6月11日
    058
  • 解决PHP undefined function mcrypt_encrypt()的报错问题

    今天迁移服务器代码遇到了一个未定义的错误 查找了相关资料后,发现是缺少php_mcrypt扩展 于是去下载扩展: https://windows.php.net/downloads…

    数据库 2023年6月14日
    076
  • IO流思维导图

    IO流思维导图 IO思维导图总结 总览: 1.文件 public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 (几乎…

    数据库 2023年6月16日
    085
  • Consul 入门-集群搭建

    集群搭建 通过 Docker 来搭建一个由3个 Server 组成的数据中心集群,再启动一个 Client 容器来做服务注册和发现的入口,开模拟看看 Server 启动命令 拉取最…

    数据库 2023年6月6日
    082
  • 第17章 触发器

    第17章 触发器 在实际开发中,我们经常会遇到这样的情况:有 2 个或者多个相互关联的表,如 商品信&#x…

    数据库 2023年6月6日
    0113
  • 同时运行两个版本相同的tomcat

    由于项目需要,代理集群和一个节点都部署在本地,那么就需要有两个tomcat,一个部署集群,一个部署项目,我都用了7.0.34版本的tomcat 当启动代理的tomcat成功时,再启…

    数据库 2023年6月11日
    093
  • windows与linux查看文件md5值

    windows CertUtil -hashfile FilePath MD5 linux md5sum FilePath Original: https://www.cnblog…

    数据库 2023年6月11日
    076
  • Eureka详解系列(三)–探索Eureka强大的配置体系

    通过前面的两篇博客,我们知道了:什么是 Eureka?为什么使用 Eureka?如何使用 Eureka?今天,我们开始来研究 Eureka 的源码,先从配置部分的源码开始看,其他部…

    数据库 2023年6月6日
    0198
  • ASP.NET CORE WEB项目介绍

    首先创建一个asp.net core web应用程序 第二步 目前官方预置了7种模板项目供我们选择。从中我们可以看出,既有我们熟悉的MVC、WebAPI,又新添加了Razor Pa…

    数据库 2023年6月14日
    088
  • MySQL数据库CRUD

    INSERT语句 INSERT INTO 表名 (column1,column2,column3,…)VALUES (value1,value2,value3,&#82…

    数据库 2023年6月16日
    072
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球