「这是我参与11月更文挑战的第29天,活动详情查看:2021最后一次更文挑战」。
Test 1
有一个薪水表 salaries
简况如下:
请你获取薪水第二多的员工的 emp_no
以及其对应的薪水 salary
。
考察知识点
INNER JOIN
,ORDER BY
,FROM
中嵌套查询结果。
解题思路
:one: 先获取第二高薪水
1 | sql复制代码SELECT DISTINCT(s2.salary) |
:two: 再查找薪资与第二高薪水相等的员工相关信息。
1 | sql复制代码SELECT emp_no, s1.salary |
Test 2
有一个员工表 employees
简况如下:
有一个薪水表 salaries
简况如下:
请你查找薪水排名第二多的员工编号 emp_no
、薪水 salary
、last_name
以及 first_name
,不能使用 order by
完成,以上例子输出为:
(温馨提示: sqlite
通过的代码不一定能通过 mysql
,因为 SQL
语法规定,使用聚合函数时,select
子句中一般只能存在以下三种元素:常数、聚合函数,group by
指定的列名。如果使用非 group by
的列名,sqlite
的结果和 mysql
可能不一样)
考察知识点
INNER JOIN
,MAX
,子查询。
解题思路
先利用 MAX()
函数找出 salaries
中当前薪水最高者,再找出小于最高薪水的 MAX(salary)
,即为第二高薪水。然后在内连接而成的表中根据题中条件筛选即可。
1 | sql复制代码SELECT e.emp_no, salary, last_name, first_name |
题目来源:牛客网-SQL数据库实战题
每日打卡,❤ 点个赞再走吧!!!❤
后续会继续分享 Mysql 方面的文章,如果感兴趣的话可以点个关注不迷路哦~。
本文转载自: 掘金