牛客题霸-SQL篇——10~20题(2)

简介: + SQ18:获取当前薪水第二多的员工的emp_no以及其对应的薪水salary描述有一个员工表employees简况如下:

牛客题霸-SQL篇——10~20题(1)https://developer.aliyun.com/article/1415692

+ SQ18:获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

描述

有一个员工表employees简况如下:

20210608142253843.png

有一个薪水表salaries简况如下:

请你查找薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不能使用order by完成,以上例子输出为:


(温馨提示:sqlite通过的代码不一定能通过mysql,因为SQL语法规定,使用聚合函数时,select子句中一般只能存在以下三种元素:常数、聚合函数,group by 指定的列名。如果使用非group by的列名,sqlite的结果和mysql 可能不一样)

20210608142306410.png

示例1

输入:

drop table if exists  `employees` ; 
drop table if exists  `salaries` ; 
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
INSERT INTO employees VALUES(10001,'1953-09-02','Georgi','Facello','M','1986-06-26');
INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21');
INSERT INTO employees VALUES(10003,'1959-12-03','Parto','Bamford','M','1986-08-28');
INSERT INTO employees VALUES(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01');
INSERT INTO salaries VALUES(10001,88958,'2002-06-22','9999-01-01');
INSERT INTO salaries VALUES(10002,72527,'2001-08-02','9999-01-01');
INSERT INTO salaries VALUES(10003,43311,'2001-12-01','9999-01-01');
INSERT INTO salaries VALUES(10004,74057,'2001-11-27','9999-01-01');


输出:

10004|74057|Koblick|Chirstian

代码:

select salaries.emp_no, max(salary) salary ,last_name,first_name
from  employees
left join salaries
on employees.emp_no = salaries.emp_no
where salary not in(
    select max(e.salary)
    from salaries e
)


20210608144218920.png

+ SQ19 查找所有员工的last_name和first_name以及对应的dept_name

描述

有一个员工表employees简况如下:

有一个部门表departments表简况如下:

20210608144852733.png

有一个,部门员工关系表dept_emp简况如下:

请你查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工,以上例子输出如下:

代码:

select e.last_name,e.first_name,d.dept_name
from employees e
left join dept_emp de
on e.emp_no = de.emp_no
left join departments d
on de.dept_no = d.dept_no


20210608145205421.png 

目录
相关文章
|
4天前
|
SQL 关系型数据库 MySQL
牛客题霸-SQL篇——10~20题(1)
+ SQ11:获取所有员工当前的manager 描述 有一个员工表dept_emp简况如下:
35 0
|
4天前
|
SQL
牛客题霸-SQL篇——1~10题(3)
+ SQ10:获取所有非manager的员工emp_no 描述 有一个员工表employees简况如下:
32 0
|
4天前
|
SQL
牛客题霸-SQL篇——1~10题(2)
+ SQ5:查找所有员工的last_name和first_name以及对应部门编号dept_no 描述 有一个员工表,employees简况如下:
37 0
|
4天前
|
SQL
牛客题霸-SQL篇——1~10题(1)
+ SQ1:查找最晚入职员工的所有信息 描述 有一个员工employees表简况如下:
52 0
|
SQL
【SQL】牛客题霸SQL入门篇1(基础查询、条件查询、高级查询)
【SQL】牛客题霸SQL入门篇1(基础查询、条件查询、高级查询)
146 0
|
SQL
牛客题霸刷题-SQL必知必会50道
SQL每个人都要用,但是用来衡量产出的并不是SQL本身,你需要用这个工具,去创造其它的价值。
260 0
牛客题霸刷题-SQL必知必会50道
|
2天前
|
SQL 数据处理 API
实时计算 Flink版产品使用合集之遇到SQL Server锁表问题如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
8 0
|
2天前
|
SQL API 流计算
实时计算 Flink版产品使用合集之在Mac M1下的Docker环境中开启SQL Server代理的操作步骤是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
18 1
|
3天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之当 SQL Server 源数据库中的数据更新后,CDC 吐出的操作(op)是怎样的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
14 0
|
4天前
|
SQL XML Linux
SQL Server的版本
【5月更文挑战第14天】SQL Server的版本
19 3