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