牛客网SQL实战笔记:九大实战题解与排序技巧解析
创始人
2024-12-18 21:44:09
0 次浏览
0 评论
牛客网数据库SQL实战笔记(1)
来自牛客网的SQL实用笔记:排序成功率和故障排除策略。牛客网上有九道SQL题,按照难度分为三个级别:简单题3道,中等题3道,困难题2道,困难题1道。
,共九题。
,根据通过率从上到下复习题目,遵循Eshobin遗忘曲线复习路径。
问题1:问题195介绍了SQL查询语句中“limit”和“offset”的使用,其中“limity”表示读取y个数据项,“limitx,y”表示忽略x个数据项并读取y个数据元素。
以及“limityoffsetx”的使用。
另外,解释一下使用“orderby”从大到小排序的方法,然后选择第一个,并指出当最新作业数据有多项时该方法的局限性。
除了排序之外,还建议使用“hire_date”。
`倒序排列,还必须对唯一的`emp_no`进行倒序排序,才能确定最新入职的人数。
问题2:第239号问题详细解释了更改表名的语句结构,即`ALTERTABLE表名RENAMETO/AS新表名`,并完成了MySQL中的使用方法。
另外,还提供了创建新表然后删除原始表的低效方法进行比较。
问题3:问题238介绍了“replace”函数的使用,包括给定值的替换、替换前的数据与替换后的数据之间的关系以及值“replaceinto()(value1,value2...)`使用。
同时讲解了其他向MySQL插入数据的方法,如`insertinto`、`replaceinto`、`insertignoreinto`以及插入数据时如何处理重复数据。
问题4:问题249的答案是如何返回特定行号的数据。
重点是使用“LIMIT语句结构:LIMITX,Y”,其中Y表示返回的记录数,X表示是哪条记录。
必须从返回。
您还可以这是开始返回之前跳过的记录数。
提供使用“limityoffsetx”的替代方法。
问题5:第281题解释了最差排名的计算方法,即将比自己高的分数和自己的分数相加得到的结果。
强调使用窗口函数(OLAP函数)来实现复杂的步骤,以及窗口函数的两部分:函数名和`over()`语句。
详细解释窗口函数的分类和使用,例如使用“orderbygraderangeBetween2precedingand3following”来计算特定范围的累积和。
问题6:问题246解释了在对字符串(包括汉字)进行排序时使用`ORDERBY`子句,当字符集为ZHS16GBK/ZH16GBK时,排序顺序为Pinyorder。
此外,还引入了函数“substr(str,pos,len)”和“substring(str,pos,len)”来处理字符串中的子字符串。
问题7:问题254基于问题87的简化版本,解释了使用自连接时需要注意的代码缩写和细节,包括正确指定分组字段以及子句之间的区别“哪里”和“有”。
问题8:问题274在经过几个选择步骤后从表中提取信息。
提出使用“GROUPBY”和“HAVING”子句进行进一步过滤的策略,并比较“WHERE”和“HAVING”子句的差异。
问题9:问题285连接用户表“user”和积分表“grade_info”,查找积分最高的用户ID、姓名和总积分。
它是使用两步方法来实现的。
首先计算每个用户的总积分,然后通过比较选出积分最多的用户。
牛客网数据库SQL实战(4)
16、统计各职称类型(中)对应的员工当前工资对应的平均工资。统计每个title类型对应的平均工资,从titles表和salaries表中找到emp_no对应的记录,进行内连接操作。
使用WHERE条件根据emp_no进行连接,而不是HAVING,因为WHERE用于过滤表中的行,HAVING用于过滤分组结果。
查询结果输出title和avg,按avg升序排序。
代码示例:17.获取当前工资第二高的员工的emp_no及其对应的工资(简单)从salaries表中选择工资第二高的emp_no和工资。
实现方法:使用LIMIT关键字选择第二高的工资。
请考虑到多名员工可能具有相同的最高工资,需要进行分组。
代码示例:18.查找当前工资第二高的员工号emp_no、salary、last_name和first_name(较难)查询当前工资第二高的员工信息,包括emp_no、salary、last_name和first_name,避免使用ORDERBY。
方法一:找出最高工资以外的最高工资。
方法二:使用自连接查询来过滤符合条件的员工。
代码示例:19.查找所有员工的last_name和first_name以及对应的dept_name(中)通过左连接操作,合并employees表、departments表和dept_emp表,得到所有员工的last_name、first_name和dept_name。
处理部门缺失信息的员工,以确保包含所有员工信息。
代码示例:21.查找所有员工自加入以来的薪资涨幅(难度)通过构建现在和加入时的薪资表,计算薪资涨幅,并输出员工编号emp_no以及按涨幅排序的涨幅。
筛选已离职员工,确保结果仅包含当前在职员工的信息。
代码示例:

相关文章

C语言选择排序算法教程:入门级理解与应用
2024-12-31 02:15:06
SQL更新字段与修改数据库表字段指南
2024-12-31 14:23:56
Linux环境下MySQL服务状态查看与...
2024-12-25 19:54:10
SQL执行顺序全解析:高效查询语句编写指...
2025-01-30 14:19:26
Redis远程登录配置全攻略:轻松开启安...
2024-12-17 19:06:08
MySQL多表数据修改操作指南:高效处理...
2025-03-29 07:33:30
全面解析MySQL索引类型及优化技巧
2025-02-12 21:28:28
SQL Server 2014共享功能目...
2025-01-29 18:32:54
阿里云DMS轻松实现跨数据库查询,优化业...
2024-12-17 05:00:13
数据库文件后缀名大全:不同数据库类型扩展...
2025-03-20 20:09:00最新文章
04
2025-04
04
2025-04
04
2025-04
04
2025-04
04
2025-04
04
2025-04
04
2025-04
04
2025-04
04
2025-04
04
2025-04
热门文章
1
高效掌握:CMD命令轻松启动、关闭及登录...
如何用cmd命令快速启动和关闭mysql数据库服务开发中经常使用MySQL数据库...
2
MySQL分区删除技巧与8.0版本新特性...
mysql删除分区在MySQL中,删除分区操作主要使用“可替代”的命令与“ dr...
3
Python代码实现:如何判断三角形的三...
python三角形三条边长,判断能否构成三角形Python三角形的三个长边如下:...
4
深度解析:MySQL查询语句执行顺序及优...
mysql查询语句执行顺序当这是由于执行SQL的过程时,了解其过程很重要。 ...
5
SQL教程:使用SUBSTRING和IN...
sql取特定字符的前面几位字符selectsubstr('L-0FCLDRBCT...
6
MySQL日期差异计算方法:轻松获取日期...
MySQL计算时间差两日期相减得月份mysql两时间相减得月MySQL计算时间之...
7
MySQL及SQL查询获取前10条数据方...
MySql查询前10条数据sql语句是从MySQL获取前1 0个数据的SQL查询...
8
MySQL启动问题排查与解决指南
Mysql为什么启动不了如果要配置MySQL,则遇到无法启动的问题,可能是由于配...
9
DbVisualizer添加MySQL数...
如何在DbVisualizer中添加本地mysql数据库由于DbVisualiz...
10
SQL字段默认值设置全攻略:轻松实现自动...
sql如何设置字段默认值设置SQL中某个字段的默认值;需要遵循几个步骤。首先您需...