Oracle 多行函数(聚合函数)和分组统计

一、聚合函数

多行函数 (聚合函数):作用于多行,返回一个值。

--这里的1表示主键那一列
select count(1) from emp;---查询总数量
select sum(sal) from emp;---工资总和
select max(sal) from emp;---最大工资
select min(sal) from emp;---最低工资
select avg(sal) from emp;---平均工资

二、分组统计

分组统计需要使用 GROUP BY 来分组

语法:

SELECT * |列名 FROM 表名 {WEHRE 查询条件} {GROUP BY 分组字段} ORDER BY 列名 1 ASC|DESC,
列名 2...ASC|DESC

分组查询中,出现在 group by 后面的原始列,才能出现在select后面
没有出现在 group by 后面的列,想在 select 后面,必须加上聚合函数。
聚合函数有一个特性,可以把多行记录变成一个值

  • 查询每个部门的人数
    在这里插入图片描述
  • 查询出每个部门的平均工资
    在这里插入图片描述
  • 如果我们想查询出来部门编号,和部门下的人数
    在这里插入图片描述
  • 按部门分组,查询出部门名称和部门的员工数量
    在这里插入图片描述
  • 查询出部门人数大于 5 人的部门
    分析:需要给 count(ename)加条件,此时在本查询中不能使用 where,可以使用 HAVING
    在这里插入图片描述
  • 查询出部门平均工资大于 2000 的部门
    在这里插入图片描述
---查询出平均工资高于2000的部门信息
select e.deptno, avg(e.sal) asal
from emp e
group by e.deptno
having avg(e.sal)>2000;
---所有条件都不能使用别名来判断,因为条件的优先级大于select,所以运行where时,别名还未成立
--比如下面的条件语句也不能使用别名当条件
select ename, sal s from emp where sal>1500;

---查询出每个部门工资高于800的员工的平均工资
select e.deptno, avg(e.sal) asal
from emp e
where e.sal>800
group by e.deptno;
----where是过滤分组前的数据,having是过滤分组后的数据。
---表现形式:where必须在group by之前,having是在group by之后。
---查询出每个部门工资高于800的员工的平均工资
---然后再查询出平均工资高于2000的部门
select e.deptno, avg(e.sal) asal
from emp e
where e.sal>800
group by e.deptno
having avg(e.sal)>2000;

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮北安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值