问题:利用emp表中的数据,完成如下查询需求:

(1)查询20号部门的所有员工信息。

select * from emp where deptno=20;

(2)查询津贴(comm)高于月薪(sal)的员工信息。

select * from emp where comm>sal;

(3)查询津贴高于月薪的20%的员工信息。

select * from emp where comm>sal*0.2;

(4)查询10号部门中职位为Manager和20号部门中职位为Clerk的员工的信息。

select * from emp where deptno=10 and job='manager' or deptno=10 and job='clerk';

(5)查询所有职位不是Manager和Clerk,且月薪大于或等于2000的员工详细信息。

select * from emp where job not in('manager','clerk') and sal>=2000;

(6)查询没有津贴或津贴低于100的员工信息。

select * from emp where comm<100 or comm is null;

(7)查询员工工龄大于或等于10年的员工信息。【四种方法】

select * from emp e WHERE e.HIREDATE<=DATE_SUB(SYSDATE(),INTERVAL 10 YEAR);
select * from emp  WHERE datediff(curdate(), HIREDATE)/365>=10;
select * from emp where datediff(now(),'2020-9-14')>=10;
select * from emp where hiredate<='1990-1-1';

(8)查询员工信息,要求以全部字母大写的方式显示所有员工的姓名。

select upper(ename) from emp;

(9)查询在2月份入职的所有员工信息。

select * from emp where extract(month from hiredate)=2;

(10)显示所有员工的姓名、入职的年份和月份,按入职日期所在的月份排序,若月份相同则按入职的年份排序。

select ename,extract(year from hiredate),extract(month from hiredate) from emp order by extract(month from hiredate);

(11)统计各个职位的人数与平均月薪。

select job ,count(*),avg(sal) from emp group by job;

(12)统计每个部门中各个职位的人数与平均月薪。

select ename ,job,count(*),avg(sal) from emp group by job;

(13)部门平均月薪最高的部门编号(提示:使用部门编号分组后,按照平均月薪降序排序,之后只显示第一条记录)。

select empno,ename,avg(sal) from emp group by empno order by avg(sal) desc limit 1;

悄悄地发别被发现了,只是为了做测试抄答案方便

Logo

更多推荐