Oracle分组函数总结

概述

分组函数是对表中一组记录进行操作,每组只返回一个结果,即首先要对表记录进行分组,然后再进行操作汇总。

MIN/MAX

返回每组的最小值个最大值
查询入职日期最早和最晚的日期。

select MIN(hiredate),MAX(hiredate)
from emp;
SUM/AVG

分别返回每组的总和及平局值
查询职位以sales开头的所有员工的平均工资、最低工资、最高工资和工资和。

select AVG(sal),MAX(sal),MIN(sal),SUM(sal)
from emp
where job LIKE 'SALES%';
COUNT

只要功能是返回满足条件的每组记录条数
查询部门30有多少员工

select COUNT(*)
from emp
where deptno=30;

也可以返回满足条件的非空行(null)数量
查询部门30有多少个员工领取奖金

select COUNT(comm)
from emp
where deptno=30;
DISTINCT

DISTINCT会消除重复记录后再使用分组函数
查询有员工的部门的数量(先去重后再计算数量)

select COUNT(DISTINCT deptno)
from emp;
组函数嵌套

示例:显示平均薪水的最大值

select max(avg(sal))
from emp
group by deptno; 

注意:与单行函数不同,组函数只能嵌套两层


注意1:如果再查询中使用了组函数,任何不在组函数中的列或者表达式都必须包含在group by字句中。
错误示例:

select deptno, COUNT(ename)
from emp;

改正:

    select deptno,COUNT(ename)
    from emp
    group by deptno;

注意2:不能在where字句中限制组,但可以通过having字句限制组
错误示例:

select deptno,max(sal)
from emp
where max(sal)>2900
group by deptno;

不能在where字句中限制组

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值