Oracle SQL:经典入门级查询练习(1)
来源:互联网 发布:怎样在淘宝上退货退款 编辑:程序博客网 时间:2024/05/17 08:52
转:http://blog.csdn.net/cselmu9/article/details/7702813
版权声明:本文为博主原创文章,未经博主允许不得转载。
下面是一些sql语句的练习题目,后面附加有详细的答案,可作为入门练习参考。
- 用SQL完成以下问题列表:
- 1、列出至少有一个员工的所有部门。
- 2、列出薪金比“SMITH”多的所有员工。
- 3、列出所有员工的姓名及其直接上级的姓名。
- 4、列出受雇日期早于其直接上级的所有员工。
- 5、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
- 6、列出所有“CLERK”(办事员)的姓名及其部门名称。
- 7、列出最低薪金大于1500的各种工作。
- 8、列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
- 9、列出薪金高于公司平均薪金的所有员工。
- 10、列出与“SCOTT”从事相同工作的所有员工。
- 11、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
- 12、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
- 13、列出在每个部门工作的员工数量、平均工资和平均服务期限。
- 14、列出所有员工的姓名、部门名称和工资。
- 15、列出所有部门的详细信息和部门人数。
- 16、列出各种工作的最低工资。
- 17、列出各个部门的MANAGER(经理)的最低薪金。
- 18、列出所有员工的年工资,按年薪从低到高排序。
- /*查看有哪些表存在*/
- select * from tab;
- TNAME TABTYPE CLUSTERID
- ------------------------------ ------- ----------
- BONUS TABLE
- DEPT TABLE
- EMP TABLE
- SALGRADE TABLE
- /*查看bonus表的全部数据*/
- SELECT * FROM bonus;
- /*查看dept表的全部数据*/
- SELECT * FROM dept;
- /*查看emp表的全部数据*/
- SELECT * FROM emp;
- /*查看salgrade表的全部数据*/
- SELECT * FROM salgrade;
- /*1、列出至少有一个员工的所有部门。*/
- SELECT COUNT(empno),deptno FROM emp GROUP BY deptno HAVING COUNT(empno)>
- /*2、列出薪金比“SMITH”多的所有员工。*/
- SELECT * FROM emp WHERE sal >(SELECT sal FROM emp WHERE ename='SMITH');/*注意括号不能省略*/
- /*3、列出所有员工的姓名及其直接上级的姓名。*/
- SELECT e.ename,m.ename FROM emp e,emp m WHERE e.mgr = m.empno;
- /*4、列出受雇日期早于其直接上级的所有员工。*/
- SELECT e.empno,e.ename,m.empno, e.hiredate,m.hiredate FROM emp e,emp m WHERE e.mgr = m.empno AND e.hiredate < m.hiredate;
- select a.ename from emp a where a.hiredate<(select hiredate from emp b where b.empno=a.mgr);
- /*5、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门*/
- SELECT d.dname,e.empno,e.ename,e.job,e.hiredate,e.sal FROM emp e RIGHT JOIN dept d ON e.deptno=d.deptno;
- select a.dname,b.empno,b.ename,b.job,b.mgr,b.hiredate,b.sal,b.deptno from dept a left join emp b on a.deptno=b.deptno;
- /*6、列出所有“CLERK”(办事员)的姓名及其部门名称。*/
- SELECT e.ename,d.dname FROM emp e ,dept d WHERE e.deptno = d.deptno AND e.job = 'CLERK';
- select a.ename,b.dname from emp a join dept b on a.deptno=b.deptno and a.job='CLERK';
- /*7、列出最低薪金大于1500的各种工作。*/
- SELECT DISTINCT(e.job) FROM emp e group by job HAVING MIN(e.sal)>1500;
- /*8、列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。*/
- SELECT e.ename FROM emp e JOIN dept d ON e.deptno = d.deptno AND d.dname='SALES';
- SELECT e.ename FROM emp e,dept d WHERE e.deptno = d.deptno AND d.dname='SALES';
- select ename from emp where deptno=(select deptno from dept where dname='SALES');
- /*9、列出薪金高于公司平均薪金的所有员工。*/
- SELECT ename FROM emp WHERE sal > sum(sal);
- /*10、列出与“SCOTT”从事相同工作的所有员工。*/
- SELECT ename FROM emp WHERE job = (SELECT job FROM emp WHERE ename='SCOTT') AND ename!='SCOTT';/*SCOTT不算在内*/
- select ename from emp where job=(select job from emp where ename='SCOTT'); /*SCOTT算在内*/
- /*11、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。*/
- SELECT ename,sal FROM emp WHERE sal IN (SELECT sal FROM emp WHERE deptno=30) AND deptno!=30;
- SELECT ename,sal FROM emp WHERE sal IN (SELECT sal FROM emp WHERE deptno=30) AND deptno<>30;
- /*12、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。*/
- SELECT ename,sal FROM emp WHERE sal > (SELECT MAX(sal) FROM emp WHERE deptno=30) AND deptno!=30;/*其实没有必要加 deptno!=30这个条件,因为已经是大于部门30中的最大薪金*/
- select ename,sal from emp where sal>(select max(sal) from emp where deptno=30);
- /*13、列出在每个部门工作的员工数量、平均工资和平均服务期限。*/
- SELECT COUNT(empno),SUM(sal)/COUNT(empno),AVG((SYSDATE-hiredate)/365) FROM emp GROUP BY(deptno);
- SELECT COUNT(empno),AVG(sal),AVG((SYSDATE-hiredate)/365) FROM emp GROUP BY(deptno);
- /*14、列出所有员工的姓名、部门名称和工资。*/
- SELECT e.ename,d.dname,e.sal FROM emp e, dept d WHERE e.deptno=d.deptno;
- SELECT e.ename,d.dname,e.sal FROM emp e JOIN dept d ON e.deptno=d.deptno;
- select a.ename,(select b.dname from dept b where b.deptno=a.deptno) as deptname,sal from emp a
- /*15、列出所有部门的详细信息和部门人数。*/
- SELECT d.deptno,d.dname,d.loc, (SELECT COUNT(empno) from emp e WHERE e.deptno = d.deptno GROUP BY e.deptno) as emp_count FROM dept d;
- /*16、列出各种工作的最低工资。*/
- SELECT job, MIN(sal) FROM emp GROUP BY job;
- SELECT job, MIN(sal),MAX(sal),AVG(sal) FROM emp GROUP BY job;/*查看最低、最高、平均工资*/
- /*17、列出各个部门的MANAGER(经理)的最低薪金。*/
- SELECT deptno, MIN(sal) FROM (SELECT sal,deptno FROM emp WHERE job='MANAGER') GROUP BY deptno;
- SELECT deptno, MIN(sal),MAX(sal),AVG(sal) FROM (SELECT sal,deptno FROM emp WHERE job='MANAGER') GROUP BY deptno;/*查看最低、最高、平均工资*/
- select deptno,min(sal) from emp where job='MANAGER' group by deptno;
- /*18、列出所有员工的年工资,按年薪从低到高排序。*/
- SELECT ename,12*(sal+NVL(comm,0)) AS year_sal FROM emp ORDER BY year_sal;/*NVL(variable,x,)表示当变量variable为NULL的时候用x来替代*/
0 0
- Oracle SQL:经典入门级查询练习(1)
- Oracle SQL:经典入门级查询练习(1)
- Oracle SQL:经典入门级查询练习 (2)
- Oracle SQL:经典查询练习(3)
- ORACLE SQL:经典查询练习
- oracle经典查询练手-练习1
- Oracle经典sql查询
- oracle常用经典SQL查询(转载)
- oracle常用经典SQL查询
- oracle常用经典SQL查询
- oracle常用经典SQL查询
- oracle常用经典SQL查询
- oracle常用经典sql查询
- oracle常用经典SQL查询
- oracle常用经典sql查询
- oracle常用经典SQL查询
- Oracle常用经典SQL查询
- oracle常用经典SQL查询
- 链路层套接字PF_PACKET简介
- Maven之MissingProject Exception
- [链表]逆转链表
- 增强现实和虚拟现实最新发展趋势
- Java中的包,类,方法
- Oracle SQL:经典入门级查询练习(1)
- 学习njit-client的一点助记
- linux环境下配置opencv
- Selenium 获取web页面Textarea内的文本信息
- 编译rt3052的openwrt固件出现的错误解决方法
- [Leetcode]3. Longest Substring Without Repeating Characters @python
- Unity3D 异步读取CSV文件
- 插入排序
- Oracle utl_file_dir参数详解