????????
目錄
10. group by(分組)
11.?having(對分組后的信息過濾)
?可能從這里開始,執行順序越來越顯得重要了!!!
10. group by(分組)
? ? ? ? ·這個查詢相比前面會有一些困難;?
? ? ? ? 格式:group by 字段的集合;
? ? ? ? 功能:把表中的記錄按照字段分成不同好的組;
? ? ? ? 注意: group by a , b , c ;先按 a 分組,在 a 相同的情況下,再按 b 分組,在 b? 相同的情況的情況下,再按 c 分組,最后統計的是最小分組的信息;?
? ? ? ? ? ? ? ? 組的整體信息:經過 “統計” 操作而得到的信息?;
? ? ? ? ? ? ? ? 組的詳細信息:比如直接輸出的某個字段;
--group by 之后只出現分組后的整體信息,不能出現組內整體信息;
select deptno ,avg(sal) as "部門平均工資"--表示輸出編號分別為10,20,30數據的平均數
?? ?from emp?
?? ?group by deptno;
select deptno,avg(sal) as "部門平均工資",ename--報錯,ename的數據前面輸出三行,而ename輸出14行;
?? ?from emp?
?? ?group by deptno;?--group by 之后只出現分組后的整體信息,不能出現組內整體信息;
select deptno,job ,avg(sal) as "平均工資"--okok
?? ?from emp
?? ?group by deptno ,job
?? ?order by deptno,job;
select deptno ,job,avg(sal) as "平均工資",count(*)as"部門人數",--集合函數都可以使用
?? ?sum(deptno)"總數",max(sal)as"最大值",min(sal)as"最小值"--集合函數操作的都是最小分組信息
?? ?from emp
?? ?group by deptno,job
?? ?order by deptno,job;?
11.?having(對分組后的信息過濾)
(前面學習的聚合函數功能為將多行記錄返回一個值,用于統計分組的信息)
--having(對分組后的數據過濾,一般會先使用group by;倘若沒有出現group by,則默認having把整張表當作一組進行過濾)
select max(sal)as"最高工資" from emp;
--輸出【平均工資大于2000的】部門平均工資
select deptno,avg(sal)as"平均工資" from emp group by deptno having avg(sal)>2000;
select deptno,avg(sal)as"平均工資" from emp group by deptno;--分組查詢編號為10,20,30的部門的平均工資
select deptno,avg(sal) as "平均工資" from emp group by deptno having count(*)>5;--分組查詢員工個數大于5的部門的平均工資
--把姓名不包含A的員工按部門編號分組,統計輸出部門平均工資大于2000的部門
--where必須寫在having的前面,順序不可顛倒;
select deptno,avg(sal),count(*)from emp?
?? ??? ?where ename not like '%A%'--對原始的數據過濾,必須放在前面
?? ??? ?group by deptno
?? ??? ?having avg(sal)>2000;--對分組后的數據過濾
????????select * from emp;
????????select deptno,avg(sal) from emp -----------------------------error
?? ??? ?group by deptno
?? ??? ?having avg(sal)>2000
?? ??? ?where ename not like '%A%';
--倘若沒有出現 group by,只出現 having,則默認 having 把整張表當作一組進行過濾(很少用)
--where和having一樣,都不允許出現字段的別名;
select deptno,avg(sal) as "平均工資" from emp group by deptno having "平均工資">2000--不可以使用別名,與執行順序有關
select ename as "部門" from emp where ename not like '%A%';
????????學完group by 和 having 感覺到麻木,無助,痛苦!
? ? ? ? 希望大家多多留言,指導一下數據庫的學習新的和學習經歷,感謝啦。