oracle分组统计查询

常用统计函数

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是在分组后的限制

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值