牛客网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以及按涨幅排序的涨幅。
筛选已离职员工,确保结果仅包含当前在职员工的信息。
代码示例:
相关文章
Oracle与MySQL数据库详解:实例...
2024-12-14 22:03:03SQL2005数据库附加失败错误5120...
2024-12-18 11:59:50MySQL自动插入新数据:不存在则自动添...
2024-12-20 12:49:49MySQL大表增列操作指南:高效添加数据...
2024-12-14 19:42:20MySQL 8.0.26 Windows...
2024-12-19 22:56:25SQL数据库数据转换:从行到列的行列转换...
2024-12-22 12:58:11MySQL基础教程:数据增删改查与权限管...
2024-12-17 03:00:49SQL技巧:高效合并两表数据与两种数据迁...
2024-12-20 01:36:07SQL三表联合查询技巧解析:两种方法及优...
2024-12-21 09:38:56MySQL全文索引查询实现指南
2024-12-16 16:44:16最新文章
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
热门文章
1
SQL2000数据库备份压缩技巧:优化空...
怎么将SQL2000中的较大的备份数据库压缩变小更改数据库属性-选项-恢复模型很...
2
高效掌握:CMD命令轻松启动、关闭及登录...
如何用cmd命令快速启动和关闭mysql数据库服务开发中经常使用MySQL数据库...
3
SQL字符串处理技巧:单引号使用与转义标...
SQL语句中,字符串类型的值均使用什么符号标明?单引号如果字符串内有单引号,请小...
4
Windows环境下Redis安装指南与...
redis安装windowsredis基本简介与安装安装Redis首先需要获取安...
5
深度解析:Redis性能优势与局限性,助...
redis有哪些优缺点?Redis的全称是RemoteDictionary.Se...
6
深入解析:MySQL数据库的特性与应用
mysql是什么MySQL是一个关系数据库管理系统。MySQL是一个开源关系数据...
7
零基础入行Java:五步助你掌握编程技巧
北大青鸟java培训:零基础小白如何快速入行JAVA?很多JAVA编程初学者在第...
8
MySQL日期存储选择:DateTime...
MySQL保存日期,用哪种数据类型合适?datetime?timestamp?还...
9
掌握MySQL常用命令:高效管理数据库的...
MySQL数据库常用命令(新建/删除/查询&am...
10
MySQL数据库备份与增量备份策略详解
mysql数据库备份方法有什么?MySQL数据库自动备份解决方案在使用MySQL...