您的位置:首页 > 数据库 > Oracle

oracle分组统计查询

2014-08-19 14:30 323 查看
常用统计函数

COUNT(*|[DISTINCT]列):求出全部记录数

SUM(列):求出总和

AVG(列):平均值

MAX(列):最大值

MIN(列):最小值

MEDIAN(列):中间值

VARIANCE(列):方差

STDDEV(列):标准差

例:select COUNT(*),SUM(sal),AVG(sal),MAX(sal),MIN(sal),MEDIAN(sal),VARIANCE(sal),STDDEV(sal) from emp;

注意:COUNT()函数表中没有数据时返回0,其他函数返回NULL,COUNT(字段)如果字段上有null,将不会被统计在内。

单字段分组统计查询

语法:GROUP BY 分组字段

例如:select deptno,COUNT(*) from emp GROUP BY deptno;

注意一:如果没有GROUP BY子句,SELECT子句中只允许出现统计函数,其他任何字段都不允许出现。

错误示范:select deptno,COUNT(empno) from emp;---------不能执行

注意二:在统计查询中,SELECT子句后只允许出现分组字段和统计函数,其他的非分组字段不能使用。

错误示范:select deptno,ename,COUNT(empno) from emp GROUP BY deptno;其中ename不属于统计字段,所以出错

注意三:统计函数允许嵌套使用,但嵌套后的SELECT子句中不允许再出现任何字段。

错误示范:select deptno,MAX(AVG(sal)) from emp GROUP BY deptno;

多字段分组统计查询

语法:GROUP BY 分组字段1,分组字段2

例如:select d.deptno,d.dname,d.loc NVL(COUNT(e.empno),0) count,NVL(ROUND(AVG(sal),2),0) avg,NVL(SUM(sal),0) sum,NVL(MAX(sal),0) max,NVL(MIN(sal),0) min

from emp e,dept d where e.deptno(+)=d.deptno GROUP BY d.deptno,d.dname,d.loc;

HIVING子句

语法:HAVING 过滤条件(s)

例如:select job,ROUND(AVG(sal),2),COUNT(empno) from emp GROUP BY job HAVING AVG(sal)>2000;

注意:where是分组前的限制,HAVING是在分组后的限制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: