1. 程式人生 > >Oracle資料庫之多行函式

Oracle資料庫之多行函式

Oracle資料庫總結:

  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> –求部門的平均工資
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                                                                                                                                                                         
        20 CLERK           1900                                                                                                                                                                         
        20 MANAGER         2975                                                                                                                                                                         
        30 CLERK            950                                                                                                                                                                         
        30 MANAGER         2850                                                                                                                                                                         
        30 SALESMAN        5600                                                                                                                                                    

SQL> –求平均工資大於2000的部門
SQL> select deptno,avg(sal)
2 from emp
3 group by deptno
4 having avg(sal) > 2000;

   DEPTNO   AVG(SAL)                                                                                                                                                                                   
---------- ----------                                                                                                                                                                                   
        20       2175                                                                                                                                                                                   
        10 2916.66667                                                                                                                                                                                   

SQL> –where和having最大的區別:where後面不能使用組函式

SQL> –查詢10號部門的平均工資
SQL> select deptno,avg(sal)
2 from emp
3 group by deptno
4 having deptno=10;

 DEPTNO   AVG(SAL)                                                                                                                                                                                   
---------- ----------                                                                                                                                                                                   
        10 2916.66667