Oracle - 多行函数

Oracle - 多行函数

  • SQL执行流程:
    最先执行的是from table,
    然后是Where子句,在对表数据进行过滤后,
    符合条件的数据通过Group by进行分组,
    分组数据通过Having子句进行聚合函数过滤,
    在执行select语句,如果有别名配置别名
    最终的结果通过order by子句进行排序,
    排序的结果被返回给用户
一、聚合函数
  • 如果统计的列中只有NULL值,那么MAX和MIN就返回NULL
  • 最多嵌套2层
组函数含义
AVG求平均值
COUNT统计行的数量
MAX求最大值
MIN求最小值
SUM求和
二、分组 group by
  • 不能对主键进行分组
  • 对有重复的记录进行分组,一般都是外键字段
--显示每个部门的平均工资
select department_id,avg(salary),count(*) from employees group by department_id;
三、分组过滤 having
  • HAVING可以单独使用而不和GROUP BY配合,如果只有HAVING子句而没有GROUP BY,表中所有的行分为一组

  • HAVING子句中可以使用组函数

  • HAVING子句中的列,要么出现在一个组函数中,要么出现在GROUP BY子句中(否则出错)

--显示每个部门的平均工资并且大于4000
--错误写法(avg(salary)>4000不能获取,因为avg(salary)是分组才能获取)
select department_id,avg(salary) from employees where avg(salary)>4000 group by department_id;

--正确写法
select department_id,avg(salary) from employees group by department_id having avg(salary)>4000;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值