SQL练习18:查找当前薪水排名第二多的员工编号emp_no
题目描述
- 题目描述
- 考察知识点
- 解题思路
有一个员工表 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)
,即为第二高薪水。然后在内连接而成的表中根据题中条件筛选即可。
SELECT e.emp_no, salary, last_name, first_name
FROM employees AS e INNER JOIN salaries AS s
ON e.emp_no = s.emp_no
AND s.salary = (SELECT max(salary)
FROM salaries
WHERE salary
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?