问题:
1. 查看emp表中部门号为20的员工的姓名、职位、参加工作时间、工资、部门编号。
2. 计算每个员工的年薪,要求输出员工姓名、年薪,并设置别名。
3. 查询每个员工的月收入。
4. 显示职位是主管(manager)的员工的姓名、工资、入职时间。
5. 显示第3个字符为字母r的所有员工的姓名及工资。
6. 显示职位为销售员(salesman)或主管(manager)的员工的姓名、工资、职位。
7. 显示所有没有补助(奖金)的员工的姓名。
8. 显示有补助的员工的姓名、工资、补助。
9. 查询出部门编号为30的所有员工。
10.所有销售员的编号、姓名、工作、领导编号、部门编号。
11.找出奖金高于工资的员工。
12.找出有奖金,且工资高于奖金90%的员工姓名、工资、奖金。
13.找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。
14.找出部门编号为10中所有经理,部门编号为20中所有销售员,以及既不是经理又不是销售员但其工资大于等于2000的所有员工详细资料。
15.查询没有奖金或奖金低于1000的员工。
16.查询名字由四个字组成的员工。
17.查询1981年入职的员工姓名、工作、入职时间。
18.查询员工编号、姓名、工作、入职时间,按员工编号升序排序
19.查询所有员工详细信息,按工资降序排序,如果工资相同使用入职日期升序排列
20.查询姓名不包含M,且工资大于1500或年薪不低于30000的雇员编号、姓名、工资、年薪,按雇员姓名降序排列
解答:
1. 查看emp表中部门号为20的员工的姓名、职位、参加工作时间、工资、部门编号。
select ename,job,hiredate,sal,deptno from emp where deptno=20;
2. 计算每个员工的年薪,要求输出员工姓名、年薪,并设置别名。
select ename name,(sal+ifnull(comm,0))*12 income from emp;
3. 查询每个员工的月收入。
select ename,sal+ifnull(comm,0) 月收入 from emp;
4. 显示职位是主管(manager)的员工的姓名、工资、入职时间。
select ename,sal,hiredate from emp where job='manager';
5. 显示第3个字符为字母r的所有员工的姓名及工资。
select ename,sal from emp where ename like '__r%';
6. 显示职位为销售员(salesman)或主管(manager)的员工的姓名、工资、职位。
select ename,sal,job from emp where job in('salesman' ,'manager');
7. 显示所有没有补助(奖金)的员工的姓名。
select ename from emp where comm is null;
8. 显示有补助的员工的姓名、工资、补助。
select ename,sal,comm from emp where comm is not null;
9. 查询出部门编号为30的所有员工。
select * from emp where deptno=30;
10.所有销售员的编号、姓名、工作、领导编号、部门编号。
select empno,ename,job,mgr,deptno from emp where job='salesman';
11.找出奖金高于工资的员工。
select * from emp where comm>sal;
12.找出有奖金,且工资高于奖金90%的员工姓名、工资、奖金。
select ename,sal,comm from emp where comm is not null and sal>comm*0.9;
13.找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。
select * from emp where (job='manager' and deptno=10) or (job='salesman' and deptno=20) ;
14.找出部门编号为10中所有经理,部门编号为20中所有销售员,以及既不是经理又不是销售员但其工资大于等于2000的所有员工详细资料。
select *
from emp
where (job='manager' and deptno=10) or (job='salesman' and deptno=20) or (job !='manager' and job !='salesman' and sal>=2000) ;
15.查询没有奖金或奖金低于1000的员工。
select * from emp where comm is null or comm<1000;
16.查询名字由四个字组成的员工。
select * from emp where ename like '____';
17.查询1981年入职的员工姓名、工作、入职时间。
select ename,job,hiredate from emp where hiredate like '1981%';
18.查询员工编号、姓名、工作、入职时间,按员工编号升序排序
select empno,ename,job,hiredate from emp order by empno asc;
19.查询所有员工详细信息,按工资降序排序,如果工资相同使用入职日期升序排列
select * from emp order by sal desc,hiredate asc;
20.查询姓名不包含M,且工资大于1500或年薪不低于30000的雇员编号、姓名、工资、年薪,按雇员姓名降序排列
select empno,ename,sal,(sal+ifnull(comm,0))*12 income
from emp
where not ename like '%m%' and sal>1500 or (sal+ifnull(comm,0))*12>=30000 order by ename desc;