一、目录
题目链接:
https://www.nowcoder.com/ta/sql
题目 | 知识点 |
---|---|
11 | join连接、<>不相等用法 |
12 | join连接、查找最值、group by |
13 | group by、count()、统计大于某值用法 |
14 | 分组、统计不重复值个数 |
15 | 查找奇偶数、排序 |
16 | group by分组、条件限制下的查找平均值 |
17 | 查找数值第二大、LIMIT x OFFSET y |
18 | 不使用order进行排序、not in 用法 |
19 | 三表联合、inner join 与 left join区别 |
20 | 生成新差值 |
11. 获取所有员工当前的manager
- 题目描述
获取所有员工当前的(dept_manager.to_date='9999-01-01')manager,如果员工是manager的话不显示(也就是如果当前的manager是自己的话结果不显示)。输出结果第一列给出当前员工的emp_no,第二列给出其manager对应的emp_no。
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL, -- '所有的员工编号'
`dept_no` char(4) NOT NULL, -- '部门编号'
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `dept_manager` (
`dept_no` char(4) NOT NULL, -- '部门编号'
`emp_no` int(11) NOT NULL, -- '经理编号'
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
-
思路
1.通过emp_no链接两个表;
2.限定条件:dept_manager.to_date=‘9999-01-01’ , -
代码
SELECT de.emp_no, dm.emp_no AS manager_no
FROM dept_emp AS de INNER JOIN dept_manager AS dm ON dm.dept_no = de.dept_no
WHERE dm.to_date = '9999-01-01' AND de.emp_no <> dm.emp_no
12. 获取所有部门中当前员工薪水最高的相关信息
- 题目描述
获取所有部门中当前(dept_emp.to_date = '9999-01-01')员工当前(salaries.to_date='9999-01-01')薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门升序排列。
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date