1. 程式人生 > >Oracle 資料庫入門之----------------------多表查詢

Oracle 資料庫入門之----------------------多表查詢

多表查詢

 

SQL> --工資總額

SQL> select sum(sal) from emp;

 

  SUM(SAL)                                                                                                                                                                                              

----------                                                                                                                                                                                              

     29025                                                                                                                                                                                              

 

SQL> --人數

SQL> select count(*) from emp;

 

  COUNT(*)                                                                                                                                                                                              

----------                                                                                                                                                                                              

        14                                                                                                                                                                                              

 

SQL> --平均工資

SQL> select sum(sal)/count(*) 一,avg(sal) 二 from emp;

 

        一         二                                                                                                                                                                                   

---------- ----------                                                                                                                                                                                   

2073.21429 2073.21429                                                                                                                                                                                   

 

SQL> --平均獎金

SQL> select sum(comm)/count(*) 一,sum(comm)/count(comm) 二,avg(comm) 三

  2  from emp;

 

        一         二         三                                                                                                                                                                        

---------- ---------- ----------                                                                                                                                                                        

157.142857        550        550                                                                                                                                                                        

 

SQL> select count(*), count(comm) from emp;

 

  COUNT(*) COUNT(COMM)                                                                                                                                                                                  

---------- -----------                                                                                                                                                                                  

        14           4                                                                                                                                                                                  

 

SQL> select * from emp;

 

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO                                                                                                              

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------                                                                                                              

      7369 SMITH      CLERK           7902 17-12-80            800                    20                                                                                                              

      7499 ALLEN      SALESMAN        7698 20-2-81           1600        300         30                                                                                                              

      7521 WARD       SALESMAN        7698 22-2-81           1250        500         30                                                                                                              

      7566 JONES      MANAGER         7839 02-4-81           2975                    20                                                                                                              

      7654 MARTIN     SALESMAN        7698 28-9-81           1250       1400         30                                                                                                              

      7698 BLAKE      MANAGER         7839 01-5-81           2850                    30                                                                                                              

      7782 CLARK      MANAGER         7839 09-6-81           2450                    10                                                                                                              

      7788 SCOTT      ANALYST         7566 19-4-87           3000                    20                                                                                                              

      7839 KING       PRESIDENT            17-11-81           5000                    10                                                                                                              

      7844 TURNER     SALESMAN        7698 08-9-81           1500          0         30                                                                                                              

      7876 ADAMS      CLERK           7788 23-5-87           1100                    20                                                                                                              

 

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO                                                                                                              

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------                                                                                                              

      7900 JAMES      CLERK           7698 03-12-81            950                    30                                                                                                              

      7902 FORD       ANALYST         7566 03-12-81           3000                    20                                                                                                              

      7934 MILLER     CLERK           7782 23-1-82           1300                    10                                                                                                              

 

已選擇 14 行。

 

SQL> --null值 5. 組函式會自動濾空;

SQL> select count(*), count(nvl(comm,0)) from emp;

 

  COUNT(*) COUNT(NVL(COMM,0))                                                                                                                                                                           

---------- ------------------                                                                                                                                                                           

        14                 14                                                                                                                                                                           

 

SQL> --null值 5. 組函式會自動濾空;可以巢狀濾空函式來遮蔽他的濾空功能

SQL> host cls

 

SQL> --每個部門的平均工資

SQL> select deptno,avg(sal)

  2  from emp

  3  group by deptno;

 

    DEPTNO   AVG(SAL)                                                                                                                                                                                   

---------- ----------                                                                                                                                                                                   

        30 1566.66667                                                                                                                                                                                   

        20       2175                                                                                                                                                                                   

        10 2916.66667                                                                                                                                                                                   

 

SQL> --多個列的分組

SQL> select deptno,job,sum(sal)

  2  from emp

  3  group by deptno,job

  4  order by 1;

 

    DEPTNO JOB         SUM(SAL)                                                                                                                                                                         

---------- --------- ----------                                                                                                                                                                         

        10 CLERK           1300                                                                                                                                                                         

        10 MANAGER         2450                                                                                                                                                                         

        10 PRESIDENT       5000                                                                                                                                                                         

        20 ANALYST         6000                                                                                                                                                                         

&nb