牛客网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以及按涨幅排序的涨幅。
筛选已离职员工,确保结果仅包含当前在职员工的信息。
代码示例:
热门文章
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...