牛客网数据库SQL实战笔记(1)
发布网友
发布时间:2024-09-30 07:52
我来回答
共1个回答
热心网友
时间:2024-10-05 17:55
牛客网SQL实战笔记:通过率排序与解题策略
牛客网SQL题目共九道,按难度分三个等级:简单3题、中等3题、较难2题、困难1题,总计九题,按照通过率从高到低进行刷题,遵循艾斯浩宾遗忘曲线复习路径。
第一题:195号题
介绍SQL查询语句中`limit`与`offset`的用法,包括`limit y`表示读取y条数据,`limit x, y`表示跳过x条数据,读取y条数据,以及`limit y offset x`的用法。此外,解释使用`order by`按由大到小排序后选取第一条的方法,并强调这种方法在多条最晚入职数据存在时的局限性,建议除了对`hire_date`逆序排序,还需对具有唯一性的`emp_no`进行逆序排序,以确定最晚入职者的人数。
第二题:239号题
详解更改表名语句的结构,即`ALTER TABLE 表名 RENAME TO/AS 新表名`,并补充MySQL中的使用方法。另外,提供创建新表后删除原表的低效方法作为对比。
第三题:238号题
介绍`replace`函数的使用,包括替换给定值、替换前的数据与替换后的数据的关系,以及`replace into () values(值1,值2...)`的用法。同时,解释在MySQL中插入数据的其他方法,如`insert into`、`replace into`、`insert ignore into`以及插入数据时遇到重复数据的处理方式。
第四题:249号题
解答如何返回特定行号的数据,重点是`LIMIT 语句结构:LIMIT X,Y`的用法,其中Y表示返回几条记录,X表示从第几条记录开始返回,也可以理解为跳过多少条记录后开始返回。提供使用`limit y offset x`的替代方法。
第五题:281号题
阐述计算最差排名的方法,即通过累加比自己成绩等级高的数量以及自己的成绩等级数量来得到结果。强调使用窗口函数(OLAP函数)来实现复杂步骤,以及窗口函数的两个部分:函数名称与`over()`语句。详细解释窗口函数的分类和使用方式,例如使用`order by grade range between 2 preceding and 3 following`来计算特定范围的累计和。
第六题:246号题
解释`ORDER BY`子句在排序字符串(包括汉字)时的使用,以及字符集为ZHS16GBK/ZH16GBK时排序顺序为拼音顺序。此外,介绍`substr(str,pos,len)`和`substring(str,pos,len)`函数用于处理字符串中的子串。
第七题:254号题
基于题87的简化版本,说明代码缩写和使用自连接时需要特别注意的细节,包括分组字段的正确指定以及`WHERE`和`HAVING`子句的区别。
第八题:274号题
通过多个筛选步骤后,从表格中提取信息。提出使用`GROUP BY`和`HAVING`子句进行进一步筛选的策略,并对比`WHERE`与`HAVING`子句的区别。
第九题:285号题
通过连接`user`用户表和`grade_info`积分表,查找积分最高的用户ID、名字以及总积分数量。采用两步法实现,首先计算每个用户总积分,然后比较选出最高积分的用户。