-
過濾分組
1、having 子句的使用
·求平均工資大于2000的員工
select deptno,avg(sal) from emp group by deptno having avg(sal)>2000
2、WHERE 與HAVING 的區別
·不能在where 子句中使用組函數
·可以在having 子句中使用組函數
3、where 和having 可以通用的情況
示例:查詢10號部門的平均工資
select deptno,avg(sal) from emp group by deptno having deptno=10;
select deptno,avg(sal) from emp where deptno=10 group by deptno;
having先分組,后過濾
where 先過濾,后分組
查看全部 -
group by 子句的使用
·group by 子句將表的數據分成若干份
示例:求每個部門的平均工資,要求顯示:部門號,部門的平均工資
select deptno,avg(sal) from emp group by deptno;
·在SELECT 列表中所有未包含在組函數中的列都應該包含在GROUP BY 子句中
·包含在GROUP BY 子句中的列不必包含在SELECT 列表中
select a,b,c,組函數(x) from table group by a,b,c;
select avg(sal) from emp group by deptno;
select deptno,job,sum(sal) from emp group by deptno,job;
查看全部 -
使用分組函數3
1、分組函數與空值
·分組函數會自動忽略空值
·舉例1:統計員工的平均工資
select sum(sal)/count(*) 一,sum(sal)/count(sal) 二,avg(sal) 三 from emp;
·統計員工的平均獎金
select sum(comm)/count(*) 一, sum(comm)/count(comm) 二,avg(comm) 三 from emp;
2、在分組函數中使用NVL函數
*注意:NVL函數使分組函數無法忽略空值
select count(*),count(nvl(comm,0)) from emp;
查看全部 -
使用分組函數2
WM_CONCAT 行轉列
select deptno,wm_concat(ename) from emp group by deptno;
查看全部 -
使用分組函數1
1、AVG(平均值)和SUM(合計)函數
·求出員工的平均工資和工資的總額
select avg(sal),sum(sal) from emp;
2、MIN(最小值)和MAX(最大值)函數
·求出員工工資的最大值和最小值
select max(sal),min(sal) from emp;
3、COUNT(計數)函數
·求出員工的總人數
select count(*) from emp;
select count(empno) from emp;
4、DISTINCT 關鍵字(用于去掉重復的記錄)
·求出部門數
select count(distinct deptno) from emp;
查看全部 -
分組函數的概念
1、什么是分組函數
·分組函數作用于一組數據,并對一組數據返回一個值。
2、常用的分組函數
·AVG 平均值
·SUM 求和
·MIN 最小值
·MAX 最大值
·COUNT 求個數
·WM_CONCAT 行轉列
查看全部 -
課程目標
1、分組函數的概念
2、分組函數的使用
3、使用GROUP BY 子句數據分組
4、使用HAVING 子句過濾分組結果集
5、在分組查詢中使用order by 子句
6、group by 語句的增強
7、SQL*Plus的報表功能
查看全部 -
having和from的區別 ?having后可以跟組函數,from后面不可以
單行子查詢 ?多行子查詢??
查看全部 -
可以使用子查詢的位置 ?where select having from?
不可以 group by
查看全部 -
自連接的核心,通過別名把一張表當做多張表
查看全部 -
左外連接在右邊條件后 加 (+)
右外連接在左邊條件后 加 (+) 反著
查看全部 -
存疑
group by 后面跟 rollup(a,b)函數 ?多用于報表
查看全部 -
order by 可以根據 列名、別名、select后的序號、表達式排列
默認按照降序排列 ? desc升序
查看全部 -
select列表中,不在組函數中的字段,必須在group by子句中
查看全部 -
分組函數自動忽略結果中的空值
要使空值不被忽略,使用nvl函數 ?nul(列名,返回值)(列為空就返回設置的返回值,不為空直接返回列中的值)
查看全部
舉報