Oracle 单行多行子查询、集合运算、DDL语句管理表(创建表、用户约束等)、DML语句处理数据(插入、更新数据及事物)、管理其他数据库对象(视图、序列、索引、同义词)

二   练习题

 

 

练习题一

SQL> --第一题
SQL> select rownum,empno,ename,sal
  2  from (select * from emp order by sal desc)
  3  where rownum<=3;

    ROWNUM      EMPNO ENAME             SAL                                                                                                                                                             
---------- ---------- ---------- ----------                                                                                                                                                             
         1       7839 KING             5000                                                                                                                                                             
         2       7788 SCOTT            3000                                                                                                                                                             
         3       7902 FORD             3000                               

练习题二

SQL> --相关子查询: 将主查询中的值 作为参数传递给子查询
SQL> select empno,ename,sal,(select avg(sal) from emp where deptno=e.deptno) avgsal
  2  from emp e
  3  where sal > (select avg(sal) from emp where deptno=e.deptno);

     EMPNO ENAME             SAL     AVGSAL                                                                                                                                                             
---------- ---------- ---------- ----------                                                                                                                                                             
      7499 ALLEN            1600 1566.66667                                                                                                                                                             
      7566 JONES            2975       2175                                                                                                                                                             
      7698 BLAKE            2850 1566.66667                                                                                                                                                             
      7788 SCOTT            3000       2175                                                                                                                                                             
      7839 KING             5000 2916.66667                                                                                                                                                             
      7902 FORD             3000       2175  

练习题二

SQL> /*
SQL> select count(*) Total,
SQL> 
SQL>        sum(if 是81年 then +1 else +0) "1981",
SQL> 
SQL> from emp;
SQL> 
SQL> HIREDATE       count81 number := 0;
SQL> -----------------------------
SQL> 17-12月-80       0
SQL> 20-2月 -81       1
SQL> 22-2月 -81       1
SQL> 02-4月 -81       1
SQL> 28-9月 -81       1
SQL> 01-5月 -81       1
SQL> 09-6月 -81       1
SQL> 19-4月 -87       0
SQL> 17-11月-81       1
SQL> 08-9月 -81       1
SQL> 23-5月 -87       0
SQL> 03-12月-81       1
SQL> 03-12月-81       1
SQL> 23-1月 -82       0
SQL> ---------------------------
SQL>                 10
SQL> 
SQL> */

猜你喜欢

转载自blog.csdn.net/qq_34811445/article/details/83451664