分組與分組函數--=================================/*一、分組:分組函數可以對行集進行操作,并且為每組給出一個結果。使用groupbycolumn1,column2,..按columm1,column2進行分組,即column1,column2組合相同的值為一個組二、常用分組函數:*/AVG([DISTINCT|ALL]n)--求平均" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

SQL基礎-->分組與分組函數

系統 2046 0

--=================================

--SQL 基礎 --> 分組與分組函數

--=================================

/*

一、分組:

??? 分組函數可以對行集進行操作,并且為每組給出一個結果。

?? 使用 group by column1 column2,.. columm1,column2 進行分組,即 column1,column2 組合相同的值為一個組

?

二、常用分組函數: */

??? AVG ( [DISTINCT|ALL]n ) ??????? -- 求平均值,忽略空值

??? COUNT ({*| [DISTINCT|ALL]expr} ) ? -- 統計個數,其中 expr 用來判定非空值 ( 使用 * 計算所有選定行,包括重復行和帶有空值的行 )

??? MAX ( [DISTINCT|ALL]expr ) ??????? -- 求最大值,忽略空值

??? MIN ( [DISTINCT|ALL]expr ) ??????? -- 求最小值,忽略空值

??? SUM ( [DISTINCT|ALL]n ) ?????? -- 求和,忽略空值

/*

三、分組函數語法: */

??? SELECT [column,] group_function ( column ), ...

??? FROM table

??? [WHERE condition]

??? [GROUP BY column]

??? [ORDER BY column] ;

/*

四、分組函數使用準則:

??? DISTINCT 使函數只考慮非重復值, ALL 則考慮包括重復值在內的所有值。默認為 ALL

  帶有 expr 參數的函數的數據類型可以為 CHAR,VARCHAR2,NUMBER,DATE.

??? 所有分組函數都忽略空值。可以使用 NVL,NVL2, COALESCE 函數代替空值

??? 使用 GROUP BY 時, Oralce 服務器隱式地按照升序對結果集進行排序。可以使用 ORDER BY 更改排序結果。 ?

?

???? 可以使用 NVL 函數強制分組函數包含空值,如: */

??????? select avg ( nvl ( comm , 0 )) from emp ; ??

/* ????

五、 GROUP BY 子句的語法:

??? 使用 GROUP BY 子句可以將表中的行分成更小的組,然后使用分組函數返回每一組的匯總信息 */

??? SELECT column , group_function ( column )

??? FROM table

??? [WHERE condition]

??? [GROUP BY group_by_expression]

??? [ORDER BY column] ;

?

??? GROUP BY ? --group_by_expression 即為對哪些列進行分組

/* ?

六、 GROUP BY 使用準則:

??? SELECT 中出現的列,如果未出現在分組函數中,則 GROUP BY 子句必須包含這些列

??? WHERE 子句可以某些行在分組之前排除在外

??? 不能在 GROUP BY 中使用列別名

??? 默認情況下 GROUP BY 列表中的列按升序排列

??? GROUP BY 的列可以不出現在分組中 ?

???

七、分組過濾:

??? 使用 having 子句

???

??? having 使用的情況:

?????? 行已經被分組

?????? 使用了組函數

?????? 滿足 having 子句中條件的分組將被顯示

?

八、演示: */

-- 為數字數據使用 AVG SUM 方法

??? SQL > select min ( sal ) as min_sal , max ( sal ) as max_sal ,

??? ? 2 ??? avg ( sal ) as avg_sal , sum ( sal ) as sum_sal

??? ? 3 ? from scott . emp ;

?

??? ?? MIN_SAL ??? MAX_SAL ??? AVG_SAL ??? SUM_SAL

??? ---------- ---------- ---------- ----------

?????? ?? 800 ?????? 5000 2073.21429 ????? 29025

?

-- 對于數字 , 字符和日期數據類型 , 你能使用 MIN MAX 方法 ?? ??

??? SQL > select min ( hiredate ) as min_hiredate , max ( hiredate ) as max_hiredate from scott . emp ;

?

??? MIN_HIRED MAX_HIRED

??? --------- ---------

??? 17 - DEC - 80 23 - MAY - 87

?

-- 使用 count(*),count(expr),count(distinct expr)

-- 注意 coung(*) 包含空值、重復值, count(expr) 過濾空值, count(distinct expr) 即過濾空值,也過濾重復值

??? SQL > select count (*), count ( mgr ), count ( distinct mgr ) from emp ;

?

??? ? COUNT (*) COUNT ( MGR ) COUNT ( DISTINCTMGR )

??? ---------- ---------- ------------------

?????????? 14 ???????? 13 ????????????????? 6

?

-- 使用 NVL 函數強制分組函數包含空值

??? SQL > select avg ( comm ) , avg ( nvl ( comm , 0 )) from emp ;

?

??? ? AVG ( COMM ) AVG ( NVL ( COMM , 0 ))

??? ---------- ----------------

?????? ?? 550 ?????? 157.142857 ???

?

-- 使用 group by 子句來分組

??? SQL > select job , avg ( sal ) from emp group by job ;

?

??? JOB ???????? AVG ( SAL )

??? --------- ----------

??? CLERK ???????? 1037.5

??? SALESMAN ??????? 1400

??? PRESIDENT ?????? 5000

??? MANAGER ?? 2758.33333

??? ANALYST ???? ???? 3000

?

--GROUP BY 的列可以不出現在分組中 ??

??? SQL > select avg ( sal ) from emp group by job order by avg ( sal ) desc ;

?

??? ? AVG ( SAL )

??? ----------

?????? ? 5000

?????? ? 3000

??? 2758.33333

?????? ? 1400

?????? 1037.5

?

-- 錯誤的用法, SELECT 中的有些列沒有在 GROUP BY 子句中出現

??? SQL > select job , avg ( sal ) from emp ;

??? select job , avg ( sal ) from emp

?????? ?? *

??? ERROR at line 1 :

??? ORA - 00937 : not a single - group group function ?

?

-- 使用 having 子句過濾分組結果

-- 查詢平均工資高于的部門號,及其平均工資。

?

??? select deptno , avg ( sal ) from emp group by deptno

??? having avg ( sal )> 2000 ;

?

-- 查出平均工資在以上的工種 (job)

??? select job , avg ( sal ) from emp group by job having avg ( sal )> 2000 ;

???

-- 求人數在人以上的部門

??? select deptno , count (*) from emp group by deptno having count (*)> 5 ;

???

-- 使用分組函數的嵌套

??? SQL > select max ( avg ( sal )) from emp group by deptno ;

?

??? MAX ( AVG ( SAL ))

??? -------------

??? ?? 2916.66667

/*

九、更多 */

Oracle 數據庫實例啟動關閉過程

?

Oracle 10g SGA 的自動化管理

?

使用 OEM,SQL*Plus,iSQL*Plus 管理 Oracle 實例

?

Oracle 實例和 Oracle 數據庫 (Oracle 體系結構 )

?

SQL 基礎 --> 常用函數

?

SQL 基礎 --> 過濾和排序

?

SQL 基礎 -->SELECT 查詢

?

SQL基礎-->分組與分組函數


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲国产一级a毛片 | 男人爱看的网站 | 欧美三级中文字幕 | 免费观看午夜在线欧差毛片 | 国产91在线精品福利 | 九九视频只有精品 | 国产成人精品视频播放 | 亚洲国产精品欧美日韩一区二区 | 久久久日本精品一区二区三区 | 欧美一级黄色录像 | 国产色综合久久无码有码 | 视频黄色在线 | 久久看片 | 久久久久依人综合影院 | 日本一二区视频 | 色拍拍欧美视频在线看 | 俄罗斯一级成人毛片 | 全黄一级裸片视频免费 | 免费看黄色的视频 | 精品一久久香蕉国产线看播放 | 中文字幕在线观看免费视频 | 久久中文亚洲国产 | 一本久草| 九九99香蕉在线视频美国毛片 | 女性牲交一级毛片 | 美女一级毛片视频 | 九色视频极品论坛区 | 亚洲国产精品xo在线观看 | 欧美videos粗暴高清性 | 久久精品国产清白在天天线 | 四虎在线观看免费视频 | 欧美日韩制服 | 抱着cao才爽免费观看 | 你懂得国产 | 久久91精品综合国产首页 | 成人精品视频 成人影院 | 精品国产免费久久久久久 | 天堂毛片| www.射射射| 久久久久欧美国产精品 | 免费黄色在线 |