Oracle入门经典语句.doc
文本预览下载声明
s 查询实训
一、使用scott/tiger用户下的emp表和dept表完成下列练习
Emp员工表
empno ename job Mgr Hiredate Sal Comm Deptno 员工号 员工姓名 工作 上级编号 受雇日期 薪金 佣金 部门编号 Dept表
Deptno Dname Loc 部门编号 部门名称 地点 1.列出至少有一个员工的所有部门。
select deptno,count(deptno) from emp group by deptno having count(deptno)=1;
2.列出薪金比“SMITH”多的所有员工。
select ename from emp where sal in( select sal from emp where sal(select sal from emp where ename=SMITH));
3.列出所有员工的姓名及其直接上级的姓名。
select a.empno,a.ename,b.empno,b.ename from emp a,emp b where a.mgr=b.empno
4.列出受雇日期早于其直接上级的所有员工。
select a.empno,a.ename,a.hiredate,b.empno,b.ename,b.hiredate from emp a,emp b where a.hiredateb.hiredate;
5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
select dept.deptno,dept.dname,emp.deptno,emp.ename from dept left join emp on dept.deptno=emp.deptno;
6.列出所有“CLERK”(办事员)的姓名及其部门名称。
select ename,(select dname from dept where deptno=emp.deptno) from emp where job=CLERK;
7.列出最低薪金大于1500的各种工作。
select job,min(sal) from emp group by job having min(sal)1500;
8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
select ename from emp where deptno=(select deptno from dept where dname=SALES);
9.列出薪金高于公司平均薪金的所有员工。
select empno,ename,sal from emp where sal(select avg(sal) from emp);
10.列出与“SCOTT”从事相同工作的所有员工。
select empno,ename,job from emp where job=(select job from emp where ename=SCOTT);
11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
select empno,sal from emp where sal=any(select sal from emp where deptno=30) and deptno30;
12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
select ename,sal from emp where salany(select max(sal) from emp where deptno=30) and deptno30;
13.列出在每个部门工作的员工数量、平均工资和平均服务期限。
select count(empno),avg(sal+comm),floor(avg(sysdate-hiredate)/365) from emp;
14.列出所有员工的姓名、部门名称和工资。
select ename,(select dname from dept where deptno=emp.deptno) 部门,sal+comm 工资 from emp;
15.列出从事同一种工作但属于不同部门的员工的一种组合。
select a.ename,a.job,b.job,b.ename from emp a,emp b where a.job=b.job and a.deptnob.deptno;
16.列出所有部门的详细信息和部门人数。
select deptno,dname,loc,(select count(empno) from emp where deptno=dept.deptno) 部门人数 from dept;
17.列出各种工作的最低工资
显示全部