简单sql
今天工作差不多完成了,好久没写sql了,随便找到一个题目,非常简单,练练手。
/*1.列出至少有一个员工的所有部门 */ select distinct dept.* from emp,dept where emp.deptno=dept.deptno /*2.列出薪金比“SMITH”多的所有员工。*/ select ename from emp where sal > (select sal from emp where ename = 'SMITH') /*3.列出所有员工的姓名及其直接上级的姓名*/ select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno /*4.列出受雇日期早于其直接上级的所有员工。*/ select e1.ename from emp e1,emp e2 where e1.mgr=e2.empno and e1.hiredate<e2.hiredate /*5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门*/ select dept.deptno,dept.dname,emp.empno,emp.ename from emp,dept where emp.deptno(+)=dept.deptno order by dept.deptno /*6.列出所有“CLERK”(办事员)的姓名及其部门名称。*/ select emp.ename,dept.dname from emp,dept where emp.job='CLERK' and emp.deptno=dept.deptno /*7.列出最低薪金大于1500的各种工作。*/ select job, min(sal) as minsal from emp group by job having min(sal)>1500 /*8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。*/ select ename from emp,dept where emp.deptno=dept.deptno and dept.dname='SALES' /*9.列出薪金高于公司平均薪金的所有员工。*/ select ename from emp where sal>(select avg(sal) from emp) /*10.列出与“SCOTT”从事相同工作的所有员工。*/ select ename from emp where job=(select job from emp where ename='SCOTT') /*11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。*/ select ename,sal,deptno from emp where sal in (select sal from emp where deptno=30) /*12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。*/ select ename,sal from emp where sal>(select max(sal) from emp where deptno=30) /*13.列出在每个部门工作的员工数量、平均工资和平均服务期限。*/ select count(1) as empnum,avg(sal),avg(sysdate-hiredate) from emp group by deptno /*14.列出所有员工的姓名、部门名称和工资。*/ select ename,sal,dept.dname from emp,dept where emp.deptno=dept.deptno /*15.列出所有部门的详细信息和部门人数。*/ select dept.*, nvl(t.total, 0) from dept, (select deptno, count(1) as total from emp group by deptno) t where dept.deptno = t.deptno(+) /*16.列出各种工作的最低工资。*/ select emp.job,min(sal) from emp group by emp.job /*17.列出各个部门的MANAGER(经理)的最低薪金。*/ select e2.deptno,min(e2.sal) from emp e1,emp e2 where e1.mgr=e2.empno group by e2.deptno,e2.deptno /*18.列出所有员工的年工资,按年薪从低到高排序。*/ select ename,sal*12 from emp order by sal asc
浙公网安备 33010602011771号