1. 程式人生 > >Oracle高階查詢——分組查詢

Oracle高階查詢——分組查詢


1.1分組函式

 1.定義:分組函式作用於一組資料,並對一組資料返回一個值。

 2.常用的分組函式:

   .AVG(求平均值)

   .SUM(求和)

   .MIN(求最小值)

   .MAN()

   .COUNT

   .WM_CONCAT(字串拼加)

   例如:

   

1.2 分組函式與空值(null)

 在分組函式中使用NVL函式,可以使分組函式無法忽略空值。

 例如:

   

1.3 group by子句

 1.在select列表中為包含在組函式的列都應該包含在group by子句中   

  

 2.包含在group by 子句中的列不必包含在select列表中

  

 3.group by 後面不允許使用列的別名

  

 4.根據多個列分組

  根據多個列分組,即先根據group by後面的第一列進行分組,然後在根據後面的列依次分組。

  

 5.非法使用組函式

  所用包含於select列表中,而未包含於組函式中的列,都必須包含於group by子句中

  

1.4 having子句過濾分組

  1.用having子句來限定分組:1.行被分組了

               2.使用了分組函式

               3.符合having子句條件的組被顯示出來

  

 2.where子句和having子句的區別:1.where子句中不能使用組函式

                  2.having子句中可以使用組函式

  

 3.在where和having子句可以通用的情況下,從SQL優化的角度來看,儘量使用where子句

1.5 在分組查詢中使用order by子句

 

 使用order by 進行排序時可以按照列、別名、表示式、序號進行排序。

 例如:

 

1.6 分組函式的巢狀

 

1.7 group by 語句的增強

 

 break on deptno skip 2:相同的部門號只顯示一次,不同的部門號之間跳過兩行

1.8 SQL*PLUS報表功能

 報表包括:標題、頁碼、別名等 
 title col 15 ‘我的報表’ col 35 sql.pno //col 15 表示空15個列;sql.pno表示報表的頁碼 
 col deptno heading 部門號 
 col job heading 職位 
 col sum(sal)heading 工資總額 
 break on deptno skip 1