亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

元朗区| 新营市| 句容市| 息烽县| 兴业县| 延津县| 体育| 那坡县| 准格尔旗| 古交市| 措美县| 海城市| 襄汾县| 福泉市| 灵丘县| 明溪县| 惠东县| 谢通门县| 沽源县| 靖安县| 周至县| 泰兴市| 连城县| 罗江县| 黔江区| 拜泉县| 逊克县| 贡山| 安宁市| 枝江市| 工布江达县| 油尖旺区| 泸州市| 镇赉县| 满洲里市| 望奎县| 诏安县| 台安县| 全州县| 临猗县| 邻水|