「数据库」sql刷题(No.3)
喜欢就 关注 我们吧!
简介:
Hello 各位 ,我是公号「八点半技术站」的创作者 - Bruce.D (姓氏:豆)。
感谢微信给予的个人认证,专注于PHP、数据库技术领域知识经验分享。
技术的交流、不仅仅限制于阅读,因此我特地创建了一个「红包激励机制」的 sql 刷题群,红包激励机制内容,我将以图片形式放在文章底部(欧力给)。
前俩篇已有 90+ 的伙伴在评论区打卡留言,参与红包激励制的 sql刷题学习。
题目一:
编写一个 SQL 查询,获取 person 表中第二高的薪水。(薪水字段:salary)。
注意:SQL查询应该返回 70 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
例如下图:
解答方法:
这里给大家提供 3 种解答方式 ,也有其他写法~~~(以下解答方式,已经过测试)
第一种:
使用 子查询 和 LIMIT 子句 的方式
将不同的薪资按降序排序,然后使用 LIMIT
子句获得第二高的薪资
SELECT DISTINCT
salary AS seconed_salary
FROM
person
ORDER BY salary DESC
LIMIT 1 OFFSET 1
如果没有这样的第二最高工资,这个解决方案将被判断为 “错误答案”,因为本表可能只有一项记录。为了克服这个问题,我们可以将其作为临时表。
SELECT
(SELECT DISTINCT
salary
FROM
person
ORDER BY salary DESC
LIMIT 1 OFFSET 1) AS seconed_salary
第二种:
使用使用 IFNULL 和 LIMIT 子句 方式
解决 “ NULL ” 问题的另一种方法是使用 “ IFNULL ” 函数。
SELECT
IFNULL(
(SELECT DISTINCT salary
FROM person
ORDER BY salary DESC
LIMIT 1 OFFSET 1),
NULL) AS seconed_salary
第三种:
使用 oracle 、mysql 通用方式
select max(salary) seconed_salary
from person
where salary < (select max(salary) from person)
题目二:
这是一张 world 表,如果一个家族占地面积超过4000平方公里,或者人口超过200,那么这个家族就是大家族(夸张修辞...Haaahaa)。
编写一条 sql,找出满足这些条件的家族,告诉我他的名字、人口 与 占地。
例如下图:
解答方法:
这里给大家提供 1 种解答方式 ,也有其他写法~~~(以下解答方式,已经过测试)
第一种:
使用 WHERE 子句和 UNION 的方式
SELECT
name, population, area
FROM
world
WHERE
area > 4000
UNION
SELECT
name, population, area
FROM
world
WHERE
population > 200
结尾总结:
这 2 道题类型评定:简单类型 。第一道题,解答方式多,第三种写法采用 oracle与mysql 通用的写法。第二道题,那种写法会比使用 where子句和 or要运行快(但是他们写法没什么差别)。
不管大家有没有其他方式,没必要会灰心,坚持打卡下去,做不一样的自己。
恭喜你、打卡成功一天,记得留言区评论:打卡+ x 天(x代表你打卡次数);
机器人会统计打卡次数,每周公布一次打卡数据。
往下拉,红包机制内容
和我再战 n+1 天
同时,为了方便大家学习,我会把一些源码、技术干货存储到 github 中,随时可以在微信群 进行交流,扫下面二维码 ,备注 “技术进群” 就可以通过审核。
进群的小伙伴请加右侧私人微信(备注:技术进群)
----投稿分隔线----
投稿,关注公众号回复“投稿”,专员对接
-----商务合作分隔线----
商务合作,关注公众号回复“商务合作”,专员
上一篇: Centos7系统添加磁盘分区并挂载
下一篇: 获取“区域““国家或地区““语言“信息
推荐阅读
-
数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
-
数据库SQL实战题:汇总各个部门当前员工的title类型的分配数目(教程)
-
数据库SQL实战题:将employees表的所有员工的last_name和first_name拼接起来作为Name(教程)
-
牛客SQL实战刷题记录(31-61题)
-
数据库SQL实战题:对于表actor批量插入如下数据,如果数据已经存在,请忽略(教程)
-
数据库SQL实战题:创建一个actor_name表(教程)
-
数据库SQL实战题:针对actor表创建视图actor_name_view(教程)
-
数据库SQL实战题:对first_name创建唯一索引uniq_idx_firstname(教程)
-
数据库SQL实战题:批量插入数据(教程)
-
Leetcode SQL 刷题