国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

【Oracle數據庫】分組函數

2019-11-08 20:59:07
字體:
來源:轉載
供稿:網友

分組函數概述

分組函數是對數據行的集合進行操作并按組給出一個結果,這個結果可直接輸出,或者用來做判斷條件分組函數的使用
SELECT [column,] group_function(column)FROM table[WHERE condition][GROUP BY column][HAVING group_function(column)exPRession[ORDER BY column|group_function(column)expression]

分組函數

MIN函數和MAX函數

MIN([DISTINCT|ALL] column|expression):返回每組中的最小值MAX([DISTINCT|ALL] column|expression):返回每組中的最大值MIN和MAX函數可以用于任何數據類型
-- 查詢入職日期最早和最晚的日期SELECT MIN(hiredate),MAX(hiredate)FROM emp

SUM函數和AVG函數

SUM([DISTINCT|ALL] column|expression):返回每組的總和AVG([DISTINCT|ALL] column|expression):返回每組的平均值SUM和AVG函數只能夠對數值類型的列或表達式操作
-- 查詢職位以SALES開頭的所有員工的平均工資、工資和SELECT AVG(sal),SUM(sal)FROM empWHERE job LIKE 'SALES%'

COUNT函數

COUNT(*):返回表中滿足條件的行記錄數
-- 查詢部門30有多少個員工SELECT COUNT(*)FROM empWHERE deptno=30COUNT([DISTINCT|ALL] column|expression):返回表中滿足條件的非空行記錄數
-- 查詢部門30有多少個員工領取獎金SELECT COUNT(comm)FROM empWHERE deptno=30

分組函數中的DISTINCT

DISTINCT會消除重復記錄后再使用組函數
-- 查詢有員工的部門數量SELECT COUNT(DISTINCT deptno)FROM emp

分組函數中的空值處理

除了COUNT(*)之外,其他所有分組函數都會忽略列表中的空值,然后再進行計算
-- 查詢獎金的平均值SELECT AVG(comm)FROM emp在分組函數中使用NVL函數可以使分組函數強制包含含有空值的記錄
-- 查詢所有員工領取到的獎金的平均值SELECT AVG(NVL(comm,0))FROM emp

GROUP BY子句

創建數據組

使用GROUP BY子句可將表中滿足WHERE條件的記錄按照指定的列劃分成若干個小組,其中GROUP BY子句指定要分組的列
-- 用GROUP BY子句創建數據組SELECT column,group_function(column)FROM table[WHERE condition][GROUP BY group_by_expression][ORDER BY column]

使用GROUP BY子句

在SELECT列表中除了分組函數那些項,所有列都必須包含在GROUP BY子句中
SELECT deptno,AVG(sal)FROM empGROUP BY deptnoGROUP BY所指定的列并不是必須出現在SELECT列表中
SELECT AVG(sal)FROM empGROUP BY deptno按多列分組的GROUP BY子句
SELECT deptno,job,SUM(sal)FROM empGROUP BY deptno,job

HAVING子句

不能在WHERE子句中限制組,要在HAVING子句中對數據組進行限制
-- 用HAVNG子句限制數據組SELECT column,group_function(column)FROM table[WHERE condition][GROUP BY group_by_expression][HAVING group_condition][ORDER BY column]使用HAVING子句限制數據組
SELECT deptno,MAX(sal)FROM empGROUP BY deptnoHAVING MAX(sal)>2900

SELECT語句執行過程

通過FROM子句中找到需要查詢的表通過WHERE子句進行非分組函數篩選判斷通過GROUP BY子句完成分組操作通過HAVING子句完成組函數篩選操作通過SELECT子句選擇顯示的列或表達式及組函數通過ORDER BY子句進行排序操作

組函數的嵌套

與單行函數不同,組函數只能嵌套兩層
SELECT MAX(AVG(sal))FROM empGROUP BY deptno
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌兰察布市| 东安县| 沙雅县| 新余市| 福建省| 临清市| 游戏| 江北区| 安顺市| 北辰区| 江山市| 乳山市| 安仁县| 博白县| 南部县| 五寨县| 永登县| 文山县| 文昌市| 石门县| 五大连池市| 佛冈县| 宝应县| 喜德县| 西城区| 龙海市| 荥阳市| 郧西县| 临高县| 兴山县| 富阳市| 综艺| 石柱| 都匀市| 隆昌县| 阜南县| 金阳县| 邹平县| 宝兴县| 定襄县| 清徐县|