中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

oracle分組函數

發布時間:2020-06-11 20:44:04 來源:網絡 閱讀:486 作者:宋姣 欄目:關系型數據庫

分組函數:作用于一組值,并對一組數據返回一個值;

分組函數的使用:

常用的分組函數:

Avg(求平均值),sum(求總和),min(求最小值),max(求最大值),count(求總個數),wm_concat(行轉列)

select count( distinct deptno) from emp ;

行轉列: select deptno 部門號,wm_concat(ename) 部門中員工的名字  from emp group by deptno;

----------------------------------------------------

分組函數與空值:(分組函數會自動忽略空值)

1.      統計員工的平均工資

Select sum(sal)/count(*) 一,sum(sal)/count(sal) 二,avg(sal) from emp;

 

2.      統計員工的平均獎金

Select sum(comm)/count(*),  sum(comm)/count(comm) 二,avg(comm) from emp;

 

注意:nvl函數使分組函數無法忽略空值

Selectsum(comm)/count(*),   sum(comm)/count(nvl(comm,0)) from emp;

Comm為空時,nvl函數返回0,0不為null,所以count不會忽略

------------------------------------------------------

Group by子句的使用

1.求部門號和部門的平均工資

Selectdeptno,avg(sal) from emp

Group bydeptno;

 抽象:

Selecta,b,c,avg(x) from table

Group bya,b,c;

規定:select列表中所有未包含在組函數中的列都應該包含在group by 子句中;

相反的,在group by 中的列,不必包含在組函數中

 

多個列的分組:(分組邏輯:先按照group by 后面第一個列分組,如果第一個列相同,再按照第二個列分組,如果所有的列都相同,那么這就是同一組中的數據)

按照部門,不同的職位,統計員工工資的總額

Select deptno,job ,sum(sal) from emp

Group by deptno,job;



-------------------------------------------------------

Having子句的使用:(過濾分組后的數據)

平均工資大于2000的部門

Select deptno,avg(sal)

From emp

Having  avg(sql)>2000;

 

Wherehaving的區別:

where子句后面不能使用分組函數

 

Wherehaving可以通用的情況(沒有分組函數的情況下可以通用,但是從

Sql優化的角度上考慮,盡量使用where)

查詢10號部門的平均工資

1.      Where

Select deptno,avg(sal) from emp wheredeptno=10 group by deptno

 

2.      Having

Select deptno,avg(sal) from empgroup by deptno having deptno=10

-----------------------------------------------------------------------------

在分組函數中使用orderby 排序(默認是asc升序)

1.Select deptno ,avg(sal)

From emp

Group by deptno

Order by avg(sal)

2.

Select deptno ,avg(sal)

From emp

Group by deptno

Order by 2—這里的2代表select語句后面的第二列,這里即avg(sal)

----------------------------------------------------------------------------

分組函數的嵌套

Select  max(avg(sal))

From emp

Group by deptno;

-----------------------------------------------------------------------

Group by 語句的增強:

(1)Selext deptno,job,sum(sal)

From emp

Group by deptno,job

 

(2)Select deptno,sum(sal)

From emp

Having deptno

 

(3)Select sum(sal) from emp

 等價于(1+2+3

Select deptno,job,sum(sal) from emp group byrollup(deptno,job);

語法:

Group by rollup(a,b)

等價于:groupby a,b+group by  a+group by null

 

Break on deptno skip 2;--相同的部門號只顯示一次,不同的部門號之間

跳過兩行

--詳細的可以看看sql-plus的報表功能

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肇东市| 西宁市| 广州市| 永定县| 黄浦区| 乐都县| 龙胜| 涞源县| 兴文县| 五寨县| 合阳县| 象山县| 东乡族自治县| 民乐县| 临漳县| 波密县| 栾城县| 平邑县| 邳州市| 突泉县| 泗洪县| 兴城市| 磐石市| 青冈县| 静安区| 阿鲁科尔沁旗| 大荔县| 马尔康县| 内丘县| 娄烦县| 清河县| 寿阳县| 平塘县| 昌邑市| 泾源县| 时尚| 台南市| 修文县| 武威市| 刚察县| 大丰市|