Oracle综合测试题
作者:互联网
-
将emp表的职员信息按雇佣日期由早到晚的先后顺序列出
select * from emp order by hiredate; -
查询职员表中没有奖金的员工信息
select * from emp where comm is null; -
查询工资高于所有员工平均工资的员工
select * from emp where sal>(select avg(sal) from emp); -
构造sql语句,查询emp表的信息,格式为“员工编码empno,姓名ename,月收入(工资+奖金)”
select ‘员工编码’||empno||’,姓名’||ename||’,月收入’||nvl(sal+comm,sal) from emp; -
查找员工姓名的长度是五个字符的员工信息
select * from emp where length(ename)=5; -
查询每个部门的职位种类,要去掉重复的职位
select deptno,job from emp group by deptno,job order by deptno; -
查询每个部门中每种职位的最高薪水
select deptno,job,max(sal) from emp group by deptno,job; -
查询员工的姓名和他在公司工作的年限(以月份数表示)
select ename,months_between(sysdate,hiredate) from emp; -
查询工资大于2000的员工的姓名,雇佣日期和薪水,其中雇佣日期以“1980年12月17日”这样的形式显示,薪水值以“rmb5000.00”这样的形式显示,查询结果按薪水的降序排序select ename,to_char(hiredate,‘yyyy"年"mm"月"dd"日"’) chusheng,‘rmb’||to_char(sal,‘9999.99’) from emp order by sal desc;
-
列出工资比smith多的所有员工
select * from emp where sal>(select sal from emp where ename=‘SMITH’); -
列出所有员工的姓名及其直接上级的姓名
select e.ename yuangong,m.ename lingdao from emp e,emp m where e.mgr=m.empno; -
列出最低工资大于1500的各种工作
select job ,min(sal) from emp group by job having min(sal)>1500; -
列出所有部门的详细信息和部门人数。
select d.*,renshu from dept d,(select deptno,count(empno) renshu from emp group by deptno) de where d.deptno=de.deptno; -
找出部门 10 中既不是经理也不是普通员工,而且工资大于等于 2000 的员工
select * from emp where deptno=10 and job<>‘MANAGER’ AND job<>‘CLERK’ AND SAL>=2000; -
找出部门 30 中得到最多奖金的员工姓名
select ename from emp where deptno=30 and comm=(select max(comm) from emp where deptno=30); -
分组统计每个部门下,每种职位的平均奖金(也要算没奖金的人)和总工资(包括奖金)
select deptno,job,avg(nvl(comm,0)),sum(nvl2(comm,sal+comm,sal)) from emp group by deptno,job; -
查找出工资等级不为 4 级的员工的员工名字,部门名字,部门地点。
select grade,ename,dname,loc from emp e join dept d on e.deptno=d.deptno join salgrade on sal between losal and hisal where grade<>4; -
生成一个1—20之间的随机数,再对其进行四舍五入处理,保留一位小数点。
select round(dbms_random.value(1,20),1) from dual; -
列出受雇日期早于其直接上级的所有员工。
select e.hiredate,e.ename yuangong,m.hiredate,m.ename lingdao from emp e join emp m on e.mgr=m.empno where e.hiredate<m.hiredate; -
查询每个部门中有同样工资的员工的统计信息, 列出他们的部门号,工资,人数。
select deptno,sal,count(empno) from emp e where (deptno,sal)in(select deptno,sal from emp where empno<>e.empno) group by deptno,sal; -
计算“1929-02-14”与当前日期之间相差的年份
select extract(year from sysdate)-extract(year from to_date(‘1929-02-12’,‘yyyy-mm-dd’)) from dual; -
查询不是领导的员工
select * from emp where empno not in(select mgr from emp where mgr is not null); -
查询第6条到第10条的员工记录
select * from (select rownum r,e.* from emp e where rownum<=10) e1 where r>=6; -
查询最高工资员工的名字和工作岗位
select ename,job,sal from emp where sal=(select max(sal) from emp ); -
显示没有上级的雇员的情况
select * from emp where mgr is null;
标签:ename,sal,测试题,emp,Oracle,综合,deptno,where,select 来源: https://blog.csdn.net/weixin_48891182/article/details/121314703