目录
- 数据内容介绍
- 习题
- 题目
- 答案
数据内容介绍
数据库中有两个表
内容如下:
习题
题目
- 查询出部门编号为D2019060011的所有员工
- 所有财务总监的姓名、编号和部门编号。
- 找出奖金高于工资的员工。
- 找出奖金高于工资40%的员工。
- 找出部门编号为D2019090011中所有财务总监,和部门编号为D2019060011中所有财务专员的详细资料。
- 找出部门编号为D2019090001中所有总经理,部门编号为D2019090011中所有财务总监,还有即不是总经理又不是销售总监但其工资大或等于4000的所有员工详细资料。
- 有奖金的工种。
- 无奖金或奖金低于1000的员工。
- 查询名字由两个字组成的员工。
- 查询2020年入职的员工。
- 查询所有员工详细信息,用编号升序排序。
- 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序。
- 查询每个部门的平均工资。
- 求出每个部门的雇员数量。
- 查询每种工作的最高工资、最低工资、人数.
- 列出最低薪金大于4000的各种工作及从事此工作的员工人数。
- 统计各部门工资总和,显示部门编号和该部门雇员的月工资的总和,并且要满足该部门雇员的月工资合计大于6000,输出结果按月工资的合计升序排列。
答案
# 第一题,查询出部门编号为D2019060011的所有员工
select name from employee where department_NO = "D2019060011";
# 第二题,所有财务总监的姓名、编号和部门编号。
select name,number,department_NO from employee where job = "财务总监";
# 第三题,找出奖金高于工资的员工。
select name from employee where bonus > salary;
# 第四题,找出奖金高于工资40%的员工。
select name from employee where bonus = salary + salary * 0.4;
# 第五题,找出部门编号为D2019090011中所有财务总监,和部门编号为D2019060011中所有财务专员的详细资料。
select * from employee where (department_NO = "D2019090011" and job = "财务总监") or ( department_NO = "D2019060011" and job = "财务专员");
# 第六题,找出部门编号为D2019090001中所有总经理,部门编号为D2019090011中所有财务总监,还有即不是总经理又不是销售总监但其工资大或等于4000的所有员工详细资料。
select * from employee where (department_NO = "D2019090001" and job = "总经理") or (department_NO = "D2019090011" and job = "财务总监") or (job not in ("总经理","销售总监") and salary >= 4000);
# 第七题,有奖金的工种。
select distinct(job) from employee where bonus is not null;
# 第八题,无奖金或奖金低于1000的员工
select name from employee where bonus < 1000 or bonus is null;
# 第九题,查询名字由两个字组成的员工
select name from employee where name like "__";
# 第十题,查询2020年入职的员工
select * from employee where hire_date >= "20200101" and hire_date <= "20201230";
# 第十一题,查询所有员工详细信息,用编号升序排序
select * from employee order by id asc;
# 第十二题,查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序
select * from employee order by salary desc,hire_date asc;
# 第十三题,查询每个部门的平均工资
select avg(salary) from employee group by(department_NO);
# 第十四题,求出每个部门的雇员数量
select department_NO,count(department_NO) from employee group by (department_NO);
# 第十五题,查询每种工作的最高工资、最低工资、人数
select job,max(salary),min(salary),count(job) from employee group by(job);
# 第十六题,列出最低薪金大于4000的各种工作及从事此工作的员工人数
select job,count(job) from employee group by (job) having min(salary) > 4000;
# 第十七题,统计各部门工资总和,显示部门编号和该部门雇员的月工资的总和,并且要满足该部门雇员的月工资合计大于6000,输出结果按月工资的合计升序排列。
select department_NO,sum(salary) from employee group by (department_NO) having sum(salary) > 6000 order by sum(salary) asc;