Oracle DBA培训:分组函数
最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!
我要咨询COUNT
如果数据库表的没有数据,count(*)返回的不是 null,而是 0
Avg,max,min,sum
分组函数与空值
分组函数省略列中的空值 select avg(comm) from emp; select sum(comm) from emp;
可使用 NVL()函数强制分组函数处理空值
select avg(nvl(comm, 0)) from emp;
GROUP BY 子句
出现在 SELECT 列表中的字段或者出现在 order by 后面的字段,如果不是包含在分组函数
中,那么该字段必须同时在 GROUP BY 子句中出现。
包含在 GROUP BY 子句中的字段则不必须出现在 SELECT 列表中。 可使用 where 字句限定查询条件
可使用 Order by 子句指定排序方式
如果没有 GROUP BY 子句,SELECT 列表中不允许出现字 段(单行函数)与分组函数混用的情况。
select empno, sal from emp; //合法
select avg(sal) from emp; //合法
select empno, initcap(ename), avg(sal) from emp; //非法
不允许在 WHERE 子句中使用分组函数。
select deptno, avg(sal)
from emp
where avg(sal) > 2000;
group by deptno;
HAVING 子句
select deptno, job, avg(sal)
from emp
where hiredate >= to_date('1981-05-01','yyyy-mm-dd')
group by deptno,job having avg(sal) > 1200 order by deptno,job;
分组函数嵌套
select max(avg(sal))
from emp
group by deptno;