mysql数据库面试题(2)
题目描述
6.查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序
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`));
输入
select emp_no,salary from salaries
group by emp_no having(min(from_date))
order by emp_no desc
| p_no | salary |
|---|---|
| 10011 | 25828 |
| 省略 | 省略 |
| 10001 | 60117 |
7.查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
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`));
输入
select emp_no, count(emp_no)
from salaries
group by emp_no
having count(emp_no)>15;
| emp_no | t |
|---|---|
| 10001 | 17 |
| 10004 | 16 |
| 10009 | 18 |
8.找出所有员工当前(to_date='9999-01-01')具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示
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`));
输入
select salary from salaries
where to_date='9999-01-01'
group by salary
order by salary desc;
输出
| salary |
|---|
| 94692 |
| 94409 |
| 88958 |
| 88070 |
| 74057 |
| 72527 |
| 59755 |
| 43311 |
| 25828 |
9.获取所有部门当前manager的当前薪水情况,给出dept_no, emp_no以及salary,当前表示to_date='9999-01-01'
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`));
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`));
输入
select d.dept_no,d.emp_no,s.salary
from dept_manager d ,salaries s
where d.emp_no = s.emp_no
and d.to_date = '9999-01-01'
and s.to_date = '9999-01-01';
输出
| dept_no | emp_no | salary |
|---|---|---|
| d001 | 10002 | 72527 |
| d004 | 10004 | 74057 |
| d003 | 10005 | 94692 |
| d002 | 10006 | 43311 |
| d006 | 10010 | 94409 |
10.获取所有非manager的员工emp_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`));
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`));
输入
select emp_no from employees
where emp_no not in
(
select emp_no from dept_manager
)
输出
| emp_no |
|---|
| 10001 |
| 10003 |
| 10007 |
| 10008 |
| 10009 |
| 10011 |

浙公网安备 33010602011771号