1. 程式人生 > >Oracle_SQL(2) 分組與聚合函數

Oracle_SQL(2) 分組與聚合函數

select order by avi emp 針對 null distinct 排序 dep

一、聚合函數
1.定義:對表或視圖的查詢時,針對多行記錄只返回一個值的函數。
2.用途:用於select語句,HAVING條件
二、5種聚合函數
1.SUM(n) 對列求和
select sum(sal) from emp;
select deptno,sum(sal) from emp group by deptno;
2.AVG(n) 對列求平均值
select avg(sal) from emp;
select deptno,avg(sal) from emp group by deptno;
3.MAX(n) 對列求最大值
select max(sal) from emp;
select deptno,max(sal) from emp group by deptno;

4.MIN(n) 對列求最小值
select min(sal) from emp;
select deptno,min(sal) from emp group by deptno;
5.COUNT(1) 記錄行數
select COUNT(1) from emp;
select deptno,COUNT(1) from emp group by deptno;
select deptno,avg(sal),sum(sal)/COUNT(1) from emp group by deptno;
count(可空列)對null值不計數
select count(comm) from emp;
count(distinct 列)對null值不計數
select count(distinct empno),count(distinct deptno) from emp;

三、分組語句
語法:group by 列名,... having 條件
1.按部門分組,輸出5種聚合函數,並按部門排序
select deptno,sum(sal),avg(sal),count(1),max(sal),min(sal)
from emp group by deptno order by deptno;
2.按部門分組,輸出部門人數大於3的部門編號及5種聚合函數,並按部門排序
select deptno,sum(sal),avg(sal),count(1),max(sal),min(sal)

from emp group by deptno having count(1)>3 order by deptno;
3.按部門分組,輸出部門人數大於等於3並且小於等於6
的部門編號及5種聚合函數,並按部門排序
select deptno,sum(sal),avg(sal),count(1),max(sal),min(sal)
from emp group by deptno having count(1)>=3 and count(1)<=6
order by deptno;
4.按部門分組,輸出工資大於1000,部門人數大於等於3並且小於等於6
的部門編號及5種聚合函數,並按部門排序
select deptno,sum(sal),avg(sal),count(1),max(sal),min(sal)
from emp where sal>1000
group by deptno having count(1)>=3 and count(1)<=6
order by deptno;

Oracle_SQL(2) 分組與聚合函數