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

做题笔记:SQL Sever 方式做牛客SQL的题目--SQL157

----SQL157 平均播放进度大于60%的视频类别
计算各类视频的平均播放进度,将进度大于60%的类别输出。
注:
播放进度=播放时长÷视频时长*100%,当播放时长大于视频时长时,播放进度均记为100%。
结果保留两位小数,并按播放进度倒序排序。
输出:
tag|avg_play_progress

表的创建及数据插入:

DROP TABLE IF EXISTS tb_user_video_log, tb_video_info;
CREATE TABLE tb_user_video_log
(id         INT PRIMARY KEY identity,-- '自增ID',uid        INT NOT NULL,-- '用户ID',video_id   INT NOT NULL,-- '视频ID',start_time datetime,-- '开始观看时间',end_time   datetime,-- '结束观看时间',if_follow  TINYINT,-- '是否关注',if_like    TINYINT,-- '是否点赞',if_retweet TINYINT,-- '是否转发',comment_id INT,-- '评论ID'
);CREATE TABLE tb_video_info
(id           INT PRIMARY KEY identity,-- '自增ID',video_id     INT UNIQUE  NOT NULL,-- '视频ID',author       INT         NOT NULL,-- '创作者ID',tag          VARCHAR(16) NOT NULL,-- '类别标签',duration     INT         NOT NULL,-- '视频时长(秒数)',release_time datetime    NOT NULL,-- '发布时间'
);INSERT INTO tb_user_video_log(uid, video_id, start_time, end_time, if_follow, if_like, if_retweet, comment_id)
VALUES (101, 2001, '2021-10-01 10:00:00', '2021-10-01 10:00:30', 0, 1, 1, null),(102, 2001, '2021-10-01 10:00:00', '2021-10-01 10:00:21', 0, 0, 1, null),(103, 2001, '2021-10-01 11:00:50', '2021-10-01 11:01:20', 0, 1, 0, 1732526),(102, 2002, '2021-10-01 11:00:00', '2021-10-01 11:00:30', 1, 0, 1, null),(103, 2002, '2021-10-01 10:59:05', '2021-10-01 11:00:05', 1, 0, 1, null);INSERT INTO tb_video_info(video_id, author, tag, duration, release_time)
VALUES (2001, 901, '影视', 30, '2021-01-01 7:00:00'),(2002, 901, '美食', 60, '2021-01-01 7:00:00'),(2003, 902, '旅游', 90, '2020-01-01 7:00:00');

查询如下:

 select tag,format(CAST(Convert(decimal(18,4),sum(watch_time)*1.0/sum(duration)) * 100 as decimal(10,2)), 'N2') + '%' as avg_play_progressfrom (select tv.tag,datediff(second,start_time,end_time)  as watch_time,tv.durationfrom tb_user_video_log tujoin tb_video_info tvon tu.video_id = tv.video_id)tgroup by tagorder by avg_play_progress desc

使用嵌套方便在写查询时理清思路,可优化查询如下(不嵌套查询):

select tv.tag,format(CAST(avg(iif(datediff(second,start_time,end_time) >= duration,100,Convert(decimal(18,2),datediff(second,start_time,end_time)*1.0/duration)*100)) as decimal(10,2)), 'N2') + '%' as avg_play_progressfrom tb_user_video_log tujoin tb_video_info tvon tu.video_id = tv.video_idgroup by tagorder by avg_play_progress desc

做题小结:
FORMAT函数
FORMAT函数用于将数据格式化为指定的字符串表示形式。它可以应用于各种数据类型,如日期、时间、数值等。
FORMAT函数的基本语法如下:

FORMAT (value, format)

value 是要格式化的表达式或列,format 是定义格式的字符串。
FORMAT函数的格式字符串的确切用法取决于输入表达式的数据类型和所需的输出格式,可以根据实际需求进行调整。
要注意FORMAT函数在处理大量数据时可能会影响性能,如果需要对大型数据集进行格式化,建议在客户端应用程序或报表中进行格式化,而不是在数据库查询中使用FORMAT函数。

【举个🌰】
有查询如下:

select 0.8500 as '转换前', format(cast(0.8500 * 100 as decimal(10,2)), 'N2') + '%' as '转换后'

执行结果:

转换前	转换后
0.8500	85.00%

在此查询中:
① 将待转换的数值使用 CAST 函数将其乘以 100,转换为 DECIMAL(10,2) 类型,结果为 85.00。② 使用 FORMAT 函数将结果格式化为带有两位小数的字符串'N2' 表示将结果作为数字格式化并保留2位小数。具体来说:‘N’ 表示数字格式,‘2’ 表示小数点后保留的位数。
③ 最后在末尾追加百分号 '% '

相关文章:

做题笔记:SQL Sever 方式做牛客SQL的题目--SQL157

----SQL157 平均播放进度大于60%的视频类别 计算各类视频的平均播放进度,将进度大于60%的类别输出。 注: 播放进度播放时长视频时长*100%,当播放时长大于视频时长时,播放进度均记为100%。 结果保留两位小数,并按播放进…...

微信小程序map视野发生改变时切换定位点

<!--地图--> <view><map id"myMap" style"width: 100%; height: 300px;" latitude"{{latitude}}" longitude"{{longitude}}"scale"{{scale}}" markers"{{markers}}" controls"{{controls}}&q…...

javaweb搭配ajax和json

ajax一般用来前端界面与后端界面交互使用。数据格式一般使用json&#xff0c;优点是便于对象与字符串的转化。 1.不适用json对象封装。 jsp: <script>$.ajax({url: "/LoginServlet",data: {"name":name, "pwd":password},dataType: &qu…...

VS2022 将项目打包,导出为exe运行

我有一个在 VS2022 上开发的程序&#xff0c;基于.net 6框架, 想打包成 .exe程序&#xff0c;以在另一个没有安装VS的机器上运行&#xff0c;另一个机器是Win7系统&#xff0c;上面安装了.net 6框架。 虽然网上很多教程&#xff0c;需要安装Project Installer&#xff0c;配置A…...

【Py/Java/C++三种语言OD2023C卷真题】20天拿下华为OD笔试【DP】2023C-分班【欧弟算法】全网注释最详细分类最全的华为OD真题题解

文章目录 题目描述与示例题目描述输入描述输出描述示例一输入输出 示例二输入输出 解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目描述与示例 题目描述 幼儿园两个班的小朋友在排队时混在了一起&#xff0c;每位小朋友都知道自己是否与前…...

pr模板哪个网站好?免费Pr模板视频素材下载网站 Prmuban.com

pr模板哪个网站好&#xff1f;哪里可以下载免费的pr模板视频素材&#xff0c;PR模板网&#xff08;Prmuban.com&#xff09;影视后期制作模板视频剪辑素材资源网站。 包含PR模板、PR插件、PR预设、MOGRT、LUT、转场特效、音乐素材、音效素材等&#xff0c;更好的剪辑师必备资源…...

【论文阅读】LoRA: Low-Rank Adaptation of Large Language Models

code&#xff1a;GitHub - microsoft/LoRA: Code for loralib, an implementation of "LoRA: Low-Rank Adaptation of Large Language Models" 做法&#xff1a; 把预训练LLMs里面的参数权重给冻结&#xff1b;向transformer架构中的每一层&#xff0c;注入可训练的…...

MybatisPlus的分页插件

PaginationInnerInterceptor 此插件是核心插件,目前代理了 Executor#query 和 Executor#update 和 StatementHandler#prepare 方法。 在SpringBoot环境中配置方式如下&#xff1a; /*** author giserDev* description 配置分页插件、方言、mapper包扫描等* date 2023-12-13 …...

保障网络安全:了解威胁检测和风险评分的重要性

在当今数字时代&#xff0c;网络安全问题变得愈发突出&#xff0c;而及时发现和迅速应对潜在威胁成为保障组织信息安全的首要任务。令人震惊的是&#xff0c;根据2023年的数据&#xff0c;平均而言&#xff0c;检测到一次网络入侵的时间竟然长达207天。这引起了对安全策略和技术…...

3D摄影棚布光:Set A Light 3D Studio

Set A Light 3D Studio是一款专业的灯光模拟软件&#xff0c;旨在帮助摄影师和电影制片人在电脑上进行虚拟灯光布置和场景模拟&#xff0c;以实现更加精准和高质量的拍摄效果。该软件提供了丰富的灯光和场景模型&#xff0c;支持灵活调整光源位置、强度、颜色和效果等参数&…...

#HarmonyOS:应用的包名配置--应用图标和标签配置--配置链接

配置相关 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/application-component-configuration-stage-0000001478340869-V2 应用的包名配置 应用需要在工程的AppScope目录下的app.json5配置文件中配置bundleName标签&#xff0c;该标签用于标识应用的唯…...

docker小白第三天

docker小白第三天 docker为什么会比虚拟机快 1、docker有着比虚拟机更少的抽象层。不需要Hypervisor实现硬件资源虚拟化&#xff0c;运行在docker容器上的程序直接使用的都是实际物理机的硬件资源&#xff0c;因此在CPU、内存利用率上docker将会在效率上有明显优势。 2、dock…...

FFmpegd的AVBSF

本章主要介绍AVBSF 文章目录 结构体定义对外函数常见的过滤器 从名字我们可以知道这是个码流过滤器&#xff0c;我们最常用的是一个叫做h264_mp4toannexb_bsf的东东 这个过滤器的作用是把h264以MP4格式的NALU转换为annexb&#xff08;0x000001&#xff09; const AVBitStreamF…...

深圳三男子写字楼内吸烟被罚,快用富维AI神器,实时监控防火灾

最近&#xff0c;在深圳&#xff0c;一专项控烟督查组在福田区新华保险大厦发现三名男子在写字楼内楼道违法吸烟&#xff0c;并对其进行了现场处罚。根据《控烟条例》&#xff0c;这类室内区域严禁吸烟&#xff0c;但人们往往忽视这一规定&#xff0c;从而引发潜在的安全风险。…...

有哪些已经上线的vue商城项目?

前言 下面是一些商城的项目&#xff0c;需要练手的同学可以挑选一些来练&#xff0c;废话少说&#xff0c;让我们直接开始正题~~ 1、newbee-mall-vue3-app 是一个基于 Vue 3 和 TypeScript 的电商前端项目&#xff0c;它是 newbee-mall 项目的升级版。该项目包含了商品列表、…...

Nginx服务器配置SSL证书

本文将全面介绍如何在Nginx或Tengine服务器配置SSL证书&#xff0c;具体包括下载和上传证书文件&#xff0c;在Nginx上配置证书文件、证书链和证书密钥等参数&#xff0c;以及安装证书后结果的验证。成功配置SSL证书后&#xff0c;您将能够通过HTTPS加密通道安全访问Nginx服务器…...

【JVM从入门到实战】(六)类加载器的双亲委派机制

一、双亲委派机制 在Java中如何使用代码的方式去主动加载一个类呢&#xff1f; 方式1&#xff1a;使用Class.forName方法&#xff0c;使用当前类的类加载器去加载指定的类。 方式2&#xff1a;获取到类加载器&#xff0c;通过类加载器的loadClass方法指定某个类加载器加载。 …...

SpringCloud面试题及答案(最新50道大厂版,持续更新)

在Java开发中&#xff0c;Spring Cloud作为微服务架构的关键组成部分&#xff0c;为了帮助广大Java技术爱好者和专业开发人员深入理解Spring Cloud&#xff0c;本文《SpringCloud面试题及答案&#xff08;最新50道大厂版&#xff0c;持续更新&#xff09;》提供了最前沿、最实用…...

Next.js 的设计理念

Next.js 的设计理念&#xff1a;简洁、强大与高效 Next.js 是一个流行的 React 框架&#xff0c;由 Vercel 公司开发。它的设计理念是简洁、强大和高效&#xff0c;这种理念贯穿于 Next.js 的所有功能中。下面我们将深入探讨这三个设计理念。 简洁 Next.js 的一个核心设计理…...

26、文件包含

文章目录 一、文件包含1.1 概念1.2 PHP文件包含原理1.3 文件包含重要函数1.4 文件包含利用条件 二、文件包含漏洞利用2.1 文件包含分类2.2 常见敏感文件2.3 包含Apache日志文件2.4 常见中间件的日志路径2.5 包含其他日志文件2.5.1 SSH日志文件2.5.2 Session文件 三、PHP封装伪协…...

期权交易基础框架:模块化设计与Python实现指南

1. 项目概述&#xff1a;一个为期权交易者打造的“乐高积木”底座如果你在量化交易或者期权策略开发领域摸爬滚打过一段时间&#xff0c;大概率会遇到一个共同的痛点&#xff1a;策略想法很多&#xff0c;但把它们变成可回测、可实盘、可管理的代码&#xff0c;却要耗费大量的“…...

轻量级配置中心zcf:中小团队微服务配置管理实战指南

1. 项目概述&#xff1a;一个轻量级、高可用的配置中心最近在梳理团队内部的技术栈&#xff0c;发现一个挺有意思的现象&#xff1a;很多中小型项目&#xff0c;甚至是一些快速迭代的业务线&#xff0c;在配置管理上依然处于一种“原始”状态。要么是各种application.yml、appl…...

详解C++作用域与生命周期

Pascal之父Nicklaus Wirth曾经提出一个公式&#xff0c;展示出了程序的本质&#xff1a;程序算法数据结构。后人又给出一个公式与之遥相呼应&#xff1a;软件程序文档。这两个公式可以简洁明了的为我们展示程序和软件的组成。程序的运行过程可以理解为算法对数据的加工过程&…...

OpenAgents开源框架:模块化AI智能体开发实战指南

1. 项目概述&#xff1a;一个面向未来的智能体开发框架最近在AI智能体这个圈子里&#xff0c;OpenAgents这个项目讨论度挺高的。简单来说&#xff0c;它不是一个单一的AI应用&#xff0c;而是一个旨在降低智能体开发门槛、加速智能体应用落地的开源框架。你可以把它想象成一个“…...

【Clickhouse从入门到精通】第08篇:揭秘ClickHouse为何如此之快——五大设计哲学

上一篇【第07篇】ClickHouse执行引擎架构——Parser、Interpreter与Function体系 下一篇【第09篇】ClickHouse安装部署全攻略——从环境准备到服务启动 摘要 ClickHouse能在十亿行级别数据的聚合查询中实现毫秒级响应&#xff0c;绝非偶然。这种极致性能的背后&#xff0c;是一…...

ElevenLabs乌尔都语语音合成精度实测报告(WER 8.2% vs 行业均值19.6%):为什么它突然支持Nastaliq音素映射?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs乌尔都语语音合成精度实测报告&#xff08;WER 8.2% vs 行业均值19.6%&#xff09;&#xff1a;为什么它突然支持Nastaliq音素映射&#xff1f; ElevenLabs于2024年Q2悄然上线乌尔都语&#…...

3D打印印章模具全攻略:从数字设计到硅胶翻模的实践指南

1. 项目概述&#xff1a;当3D打印遇上传统印章艺术我一直对融合数字制造与传统手工艺的项目特别着迷&#xff0c;最近花了不少时间折腾用3D打印模具来制作定制印章&#xff0c;整个过程就像在数字世界和物理世界之间架起了一座桥。简单来说&#xff0c;这个项目的核心思路是&am…...

基于Databerry的私有数据AI应用构建:从RAG原理到生产部署

1. 项目概述&#xff1a;一个开箱即用的AI应用构建平台如果你正在寻找一个能快速将私有数据&#xff08;比如公司文档、个人笔记、产品手册&#xff09;转化为智能问答机器人的工具&#xff0c;但又不想从零开始折腾复杂的向量数据库、嵌入模型和API集成&#xff0c;那么gmpetr…...

NeoPixel电源设计全攻略:从电流估算到多电源分配

1. 项目概述&#xff1a;为什么NeoPixel电源设计是成败关键如果你玩过NeoPixel或者类似的WS2812B可编程LED&#xff0c;大概率经历过这样的场景&#xff1a;精心设计的动画点亮了十几个灯珠&#xff0c;效果惊艳&#xff1b;但当你兴冲冲地把灯珠数量加到一百个&#xff0c;准备…...

GoLang简便模板缓存实现

在GoLang开发中&#xff0c;当项目运行时&#xff0c;go的html/template默认行为是每次请求都得重新解析模板文件&#xff0c;当高并发&#xff0c;频繁的磁盘读取会造成非常大的负担&#xff0c;成为明显瓶颈&#xff0c;所以&#xff0c;为了避免重复解析模板文件&#xff0c…...