牛客题霸-SQL进阶篇(刷题记录一)

本文基于前段时间学习总结的 MySQL 相关的查询语法,在牛客网找了相应的 MySQL 题目进行练习,以便加强对于 MySQL 查询语法的理解和应用。

由于涉及到的数据库表较多,因此本文不再展示,只提供 MySQL 代码与示例输出。

部分题目因为较难,难以独立做出或代码仅在平台上运行不成功,故附上题目解法讨论的链接供大家参考。

SQL 题目

SQL 110:在表中插入相关数据(一)

insert into exam_record(uid, exam_id, start_time, submit_time, score) 
values
(1001, 9001, '2021-09-01 22:11:12', '2021-09-01 23:01:12', 90),
(1002, 9002, '2021-09-04 07:01:02', null, null)

SQL 111:在表中插入相关数据(二)

insert into exam_record_before_2021
select null, uid,exam_id, start_time, submit_time, score
from exam_record 
where year(submit_time) < 2021

SQL 112:在表中插入相关数据(三)

replace into examination_info (exam_id, tag, difficulty, duration, release_time) 
values (9003, 'SQL', 'hard', 90, '2021-01-01 00:00:00')

SQL 123:查询所有用户完成 SQL 类别高难度试卷得分的截断平均值(去掉一个最大值和一个最小值后的平均值)

select tag, difficulty, round((sum(score)-max(score)-min(score))/(count(score)-2), 1) as clip_avg_score
from exam_record er
join examination_info ei
on er.exam_id = ei.exam_id
where tag = 'SQL' and difficulty = 'hard'
group by tag, difficulty

在这里插入图片描述

SQL 124:查询总作答次数 total_pv、试卷已完成作答数 complete_pv 和已完成的试卷数 complete_exam_cnt

select count(exam_id) as total_pv,
count(score) as complete_pv,
count(distinct if(submit_time is not null, exam_id, null)) as omplete_exam_cnt
from exam_record

在这里插入图片描述


SQL 125:查询 SQL 试卷得分不小于该类试卷平均得分的用户最低得分

select score as min_score_over_avg
from exam_record er
join examination_info ei
on er.exam_id = ei.exam_id
where score >= (
    select avg(score)
    from exam_record er
    join examination_info ei
    on er.exam_id = ei.exam_id
    where tag = 'SQL'
) and tag = 'SQL' 
order by min_score_over_avg
limit 1

在这里插入图片描述

SQL 126:查询 2021 年每个月里试卷作答区用户平均月活跃天数 avg_active_days 和月度活跃人数 mau

select date_format(submit_time, '%Y%m') as month,
round(count(distinct uid, date_format(submit_time,'%Y%m%d'))/count(distinct uid), 2) as avg_active_days,
count(distinct uid) as mau
from exam_record
where year(submit_time) = 2021
group by month

在这里插入图片描述

SQL 127:查询 2021 年每个月里用户的月总刷题数 month_q_cnt,日均刷题数 avg_day_q_cnt(按月份升序排序)以及该年的总体情况(难点:with rollup 用法简化代码)

select ifnull(date_format(submit_time, '%Y%m'), '2021汇总') as submit_month, 
count(question_id) as month_q_cnt,
round(count(question_id)/day(last_day(submit_time)),3) avg_day_q_cnt 
from practice_record
where year(submit_time) = 2021
group by date_format(submit_time, '%Y%m')
with rollup

在这里插入图片描述
链接 1:MySQL 中 with rollup 的用法

链接2:SQL 127 题目解法讨论

SQL 128:查询 2021 年每个未完成试卷作答数大于 1 的有效用户的用户 ID、未完成试卷作答数、完成试卷作答数、作答过的试卷 tag 集合,按未完成试卷数量由多到少排序(有效用户指完成试卷作答数至少为 1 且未完成数小于 5)(难点:group by 用法)

select uid, 
sum(case when submit_time is null then 1 else 0 end) as incomplete_cnt,
sum(case when submit_time is null then 0 else 1 end) as complete_cnt,
# 方法2
# sum(submit_time is null) as incomplete_cnt
# count(submit_time) as complete_cnt
group_concat(distinct date(start_time),':',tag separator ';') as detail
from exam_record er
join examination_info ei
on er.exam_id = ei.exam_id
where year(start_time) = 2021
group by uid
having complete_cnt >= 1 and incomplete_cnt > 1 and incomplete_cnt < 5
order by incomplete_cnt desc

在这里插入图片描述

链接 1:MySQL 中的 group_concat 函数

链接 2:SQL 128 题目解法讨论


SQL 129:查询当月均完成试卷数不小于 3 的用户们爱作答的类别及作答次数,按次数降序输出

select tag, count(tag) as tag_cnt
from exam_record er
join examination_info ei
on er.exam_id = ei.exam_id
where uid in(
    select uid from exam_record
    group by uid
    having count(submit_time) / count(distinct date_format(submit_time, "%Y%m")) >= 3
)
group by tag
order by tag_cnt desc

在这里插入图片描述

SQL 130:查询每张 SQL 类别试卷发布后,当天 5 级以上的用户作答的人数 uv 和平均分 avg_score,并按人数降序,相同人数的按平均分升序

select ei.exam_id, count(distinct ui.uid) as uv, round(avg(score), 1) as avg_score
from user_info ui
join exam_record er
on ui.uid = er.uid
join examination_info ei
on er.exam_id = ei.exam_id
where level > 5 and tag = 'SQL'
group by ei.exam_id
order by uv desc, avg_score asc

在这里插入图片描述

SQL 131:查询作答 SQL 类别的试卷得分 > 80 的人的用户等级分布,并按数量降序排序(保证数量都不同)

select level, count(level) as level_cnt
from user_info ui
join exam_record er
on ui.uid = er.uid
join examination_info ei
on er.exam_id = ei.exam_id
where tag = 'SQL' and score > 80
group by level
order by level_cnt desc

在这里插入图片描述

SQL 132:查询作答 SQL 类别的试卷得分 > 80 的人的用户等级分布,并按数量降序排序(注意:自建数据库时,以下代码能正确运行)

select exam_id as tid, count(distinct uid) as uv, count(start_time) as pv
from exam_record
group by exam_id
union
select question_id as tid, count(distinct uid) as uv, count(submit_time) as pv
from practice_record
group by question_id
order by uv desc, pv desc

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/468728.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言之我对结构体与联合体的认识

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

Huggingface 笔记:大模型(Gemma2B,Gemma 7B)部署+基本使用

1 部署 1.1 申请权限 在huggingface的gemma界面&#xff0c;点击“term”以申请gemma访问权限 https://huggingface.co/google/gemma-7b 然后接受条款 1.2 添加hugging对应的token 如果直接用gemma提供的代码&#xff0c;会出现如下问题&#xff1a; from transformers i…

基于Spring Boot的社区垃圾分类管理平台的设计与实现

摘 要 近些年来&#xff0c;随着科技的飞速发展&#xff0c;互联网的普及逐渐延伸到各行各业中&#xff0c;给人们生活带来了十分的便利&#xff0c;社区垃圾分类管理平台利用计算机网络实现信息化管理&#xff0c;使整个社区垃圾分类管理的发展和服务水平有显著提升。 本文拟…

WordPress自动生成原创文章插件

WordPress作为最受欢迎的内容管理系统之一&#xff0c;为博客和网站的搭建提供了便捷的解决方案。而在内容创作方面&#xff0c;自动生成原创文章的插件为WordPress用户提供了更为高效的选项。 什么是WordPress自动生成原创文章插件&#xff1f; WordPress自动生成原创文章插件…

Rust 错误处理入门和进阶

Rust 错误处理入门和进阶 引用 Rust Book 的话&#xff0c;“错误是软件中不可避免的事实”。这篇文章讨论了如何处理它们。 在讨论 可恢复错误和 Result 类型之前&#xff0c;我们首先来谈谈 不可恢复错误 - 又名恐慌(panic)。 不可恢复错误 恐慌(panic)是程序可能抛出的异…

C++第七弹---类与对象(四)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、拷贝构造函数 1.1、概念 1.2、特征 2、运算符重载 2.1、等号运算符重载 总结 1、拷贝构造函数 1.1、概念 在现实生活中&#xff0c;可能…

学习Python,需要知道的经典案例

文章目录 一、Python简介二、Python经典案例1. 猜数字游戏2. 文本文件处理3. 网络爬虫4. 数据可视化5. 电子邮件发送6. 实现一个简单的Web服务器。 三、Python处理IP相关知识点1. 处理IP地址2. 网络编程&#xff08;TCP/IP&#xff09;3. 使用第三方库处理IP信息 四、相关链接 …

Java安全 反序列化(1) URLDNS链原理分析

Java安全 反序列化(1) URLDNS链原理分析 文章目录 Java安全 反序列化(1) URLDNS链原理分析前置知识应用分析payload1.新建HashMap类2.新建URL类3.获取URL 的 Class对象4.通过反射访问URL内部变量5.通过反射为URL中类赋值6.调用HashMap#put方法传入key和value7.再次通过反射为UR…

基于单片机的智能台灯设计1.42

摘 要 社会在发展&#xff0c;时代在进步&#xff0c;人们对生活质量需求更加膨胀&#xff0c;是否拥有高科技技术也最终决定着产品是否可以满足人们的欲望&#xff0c;只有性价比更高&#xff0c;才可以得到更好的青睐。现在的电子产品愈来愈多&#xff0c;龙蛇混杂&#xff…

vue使用element-ui 实现自定义分页

element-ui文档截图&#xff0c;plus大同小异。 可以通过插槽实现自定义的分页。在layout里面进行配置。 全部代码 //page.js export default {name:Cuspage,props:{total:Number,},data(){return {currentPage:1,pageSize:10,}}methods: {setslot (h) {return(<div cla…

tinyrenderer-Bresenham绘制直线算法

如何画线段 第一种尝试 求x&#xff0c;y起始点的差值&#xff0c;按平均间隔插入固定点数 起始点平均插入100个点&#xff1a; void line(int x0, int y0, int x1, int y1, TGAImage& image, TGAColor color) {for (float t 0.; t < 1.; t .01) {int x x0 (x1 -…

力扣每日一题 2024/3/19 好子数组的最大分数

题目描述 用例说明 思路讲解 好子数组的下标在i<k<j,即nums[k]必须在好子数组当中&#xff0c;将数组以k为分界点分为左右两半&#xff0c;左半left从k-1向左移动&#xff0c;右半right从k1开始出发向右移动。 当left大于等于分界点的值时左移一位&#xff0c;当right大…

tp8 mpdf 导出pdf

1. 安装mpdf composer require mpdf/mpdf 2. 然后 使用 use mpdf\Mpdf; 或者 require_once __DIR__ . /vendor/autoload.php; 官方文档 mPDF – mPDF 手册 文档里有很多东西 可以自己去研究 3. 编写代码 下载 (支持中文) $mpdf new Mpdf([mode > utf-8,"autoS…

CMeet系列技术生态沙龙---《探索未来:生成式AI赋能千行百业·杭州》

当前数字化浪潮下&#xff0c;生成式AI技术正成为推动产业升级、提升竞争力的关键力量。为深入探索未来AI技术的赋能作用&#xff0c;促进技术生态的繁荣与发展&#xff0c;CSDN-CMeet系列沙龙活动旨在搭建一个交流与探索的平台&#xff0c;通过分享前沿研究成果和应用案例&…

服务器数据恢复—光纤环境互斥不当导致存储VMFS卷损坏的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某公司的信息管理平台&#xff0c;通过3台虚拟机共享了一台存储设备供企业内部使用&#xff0c;存储设备中存放了公司内部重要的数据文件。 由于业务增长的需要&#xff0c;管理员又在这个存储网络上连接了一台Windows server服务器&a…

媒体邀约:推广方法

1.媒体邀约推广媒体邀约推广是一种通过与商务合作以增强曝光度和名气的营销手段。积极与商务合作&#xff0c;公司能将产品和服务推广给更大范围受众人群&#xff0c;以达到增加销量和市场占有率目地。 1.1 选择适合自己的新闻媒体选择适合自己的新闻媒体是媒体邀约推广的关键…

sqllab第35-45关通关笔记

35关知识点&#xff1a; 宽字节注入数值型注入错误注入 payload:id1andextractvalue(1,concat(0x7e,database(),0x7e))0--联合注入 payload:id0unionselect1,database(),version()-- 36关知识点&#xff1a; 字符型注入宽字节注入错误注入 payload:id1%df%27andextractvalue(…

Qt实现简单的五子棋程序

Qt五子棋小程序 Qt五子棋演示及源码链接登陆界面单机模式联机模式联网模式参考 Qt五子棋 参考大佬中国象棋程序&#xff0c;使用Qt实现了一个简单的五子棋小程序&#xff0c;包含了单机、联机以及联网三种模式&#xff1b;单机模式下实现了简易的AI&#xff1b;联机模式为PtoP…

由于找不到kvpvbsext64.dll,无法继续执行代码。解决办法,

kvpvbsext64.dll 是一个动态链接库文件&#xff0c;通常作为某个软件的一部分存在。具体来说&#xff0c;它可能为某个程序的特定功能提供支持&#xff0c;在软件运行时被调用和使用。因此&#xff0c;当出现与该文件相关的错误时&#xff0c;可能会影响到相应软件的正常运行。…

ModbusTCP转Profinet网关高低字节交换切换

背景&#xff1a;在现场设备与设备通迅之间通常涉及到从一种字节序&#xff08;大端或小端&#xff09;转换到另一种字节序。大端字节序是指高位字节存储在高地址处&#xff0c;而小端字节序是指低位字节存储在低地址处。在不动原有程序而又不想或不能添加程序下可选用ModbusTC…