Oracle學(xué)習(xí)day-29:組函數(shù)、子查詢

一、組函數(shù)

1.什么是組函數(shù)?

組函數(shù)操作行集,給出每組的結(jié)果。組函數(shù)不象單行函數(shù),組函數(shù)對行的集合進行操作, 對每組給出一個結(jié)果。這些集合可能是整個表或者是表分成的組。

2.組函數(shù)與單行函數(shù)的區(qū)別:

1)單行函數(shù)對查詢到每個結(jié)果集做處理,而組函數(shù)只對分組數(shù)據(jù)做處理。?

3)單行函數(shù)對每個結(jié)果集返回一個結(jié)果,而組函數(shù)對每個分組返回一個結(jié)果。

3.組函數(shù)的類型:

1)AVG(arg)函數(shù):對分組數(shù)據(jù)做平均值運算。

2)SUM(arg)函數(shù):對分組數(shù)據(jù)求和。

3)COUNT 函數(shù):返回一個表中的行數(shù)

4)MIN(arg)函數(shù):求分組中最小數(shù)據(jù)。

5)MAX(arg)函數(shù):求分組中最大數(shù)據(jù)。

(1)組函數(shù)參數(shù)的數(shù)據(jù)類型:

1)用于函數(shù)的參數(shù)的數(shù)據(jù)類型可以是 CHAR、VARCHAR2、NUMBER 或 DATE。

2)所有組函數(shù)忽略空值。為了用一個值代替空值,用 NVL、NVL2 或 COALESCE 函

數(shù)。

注意:AVG 和 SUM 函數(shù)的參數(shù)類型只能是數(shù)字類型; MIN 和 MAX 函數(shù)的參數(shù)類型可以是字符、數(shù)字、日期。

(3)使用 AVG 和 SUM 函數(shù):

select avg(列名) ,sum(列名) from 表名;

(4)使用 MIN 和 MAX 函數(shù):

select min(列名),max(列名) from 表名;

(5)使用 COUNT 函數(shù):返回一個表中的行數(shù)。

COUNT 函數(shù)有三種格式:

1)COUNT(*) :返回表中滿足 SELECT 語句標(biāo)準(zhǔn)的行數(shù),包括重復(fù)行,包括有空值列的行。

2)COUNT(expr) :返回在列中的由 expr 指定的非空值的數(shù)。

3)COUNT(DISTINCTexpr):使用 DISTINCT 關(guān)鍵字禁止計算在一列中的重復(fù)值。

4.創(chuàng)建數(shù)據(jù)組

(1)什么是數(shù)據(jù)組?

可以根據(jù)需要將查詢到的結(jié)果集信息劃分為較小的組,用 GROUPBY 子句實現(xiàn)。

(2)GROUPBY 子句語法:

GROUPBY 子句:GROUPBY 子句可以把表中的行劃分為組。然后可以用組函數(shù)返回 每一組的摘要信息。

(3)GROUPBY 子句的執(zhí)行順序:

先進行數(shù)據(jù)查詢,在對數(shù)據(jù)進行分組,然后執(zhí)行組函數(shù)。

注意:

1)在 SELECT 列表中的任何列必須在 GROUPBY 子句中。

2)在 GROUPBY 子句中的列或表達式不必在 SELECT 列表中。

5.約束分組結(jié)果

(1)什么是HAVING子句?

HAVING 語句通常與 GROUPBY 語句聯(lián)合使用,用來過濾由 GROUPBY 語句返回的記 錄集。 HAVING 語句的存在彌補了 WHERE 關(guān)鍵字不能與聚合函數(shù)聯(lián)合使用的不足。

(2)HAVING 子句語法:

(3)嵌套組函數(shù)

在使用組函數(shù)時我們也可以根據(jù)需要來做組函數(shù)的嵌套使用。
select max(avg(列名)) from 表名 group by 列名;

二、子查詢

1.什么是子查詢?

子查詢是一個 SELECT 語句,它是嵌在另一個 SELECT 語句中的子句。

2.子查詢語法:

1) 子查詢在主查詢之前執(zhí)行一次 ;

2)子查詢的結(jié)果被用于主查詢 ;

3)可以將子查詢放在:WHERE 子句 、HAVING 子句 和FROM 子句中。

3.使用子查詢:

可以用組合兩個查詢的方法解決這個問題,放置一個查詢到另一個查詢中。內(nèi)查詢或子 查詢返回一個值給外查詢或主查詢。使用一個子查詢相當(dāng)于執(zhí)行兩個連續(xù)查詢并且用第一個 查詢的結(jié)果作為第二個查詢的搜索值。

(1)子查詢的原則:

1)子查詢放在圓括號中。

2)將子查詢放在比較條件的右邊。

3)在單行子查詢中用單行運算符,在多行子查詢中用多行運算符。

4.單行子查詢:

子查詢語句只返回一行的查詢,使用單行比較符。

(1)主查詢對子查詢結(jié)果的單行比較運算符:

(2)在子查詢中可以使用組函數(shù),可以在 WHERE 子句中使用子查詢,也可以在 HAVING 子句中使用子查詢。

注意:子查詢錯誤,使用子查詢的一個常見的錯誤是單行子查詢返回了多行。

5.多行子查詢:

子查詢語句返回多行的查詢,使用多行比較符。

(1)主查詢對子查詢的多行比較運算符(在條件中也可使用 NOT 取反):

(2)在多行子查詢中使用 IN 運算符:

(3)在多行子查詢中使用 ANY 運算符(<ANY 意思是小于最大值。 >ANY 意思是大于最小值):

(4)在多行子查詢中使用 ALL 運算符(<ALL 意思是小于最小值。>ALL 意思是大于最大值):

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容