Oracle 数据库-分组函数总结

Oracle 分组函数

分组函数作用于一组数据,并对一组函数返回一个值。

组函数类型
avg,count,max,min,sum
可以对数值型数据使用avg和sum函数。

select avg(salary),min(salary),max(salary),sum(salary) from employees where job_id like '%REP%';

avg(平均值)和sum(合计)函数:
可以对任意数据类型的数据使用 min和 max函数(包括日期)。

select min(hire_date),max(hire_date) from employees

count(*)返回表中记录总数,适用于任意数据类型。

select count(*) from employees where department_id = 50;

count (expr) 返回expr不为空的记录总数。

select count (commission_pct) from employees where department_id = 50;

组函数忽略空值

select avg(commission_pct) from employees;
·
NVL函数使分组函数无法忽略空值

select avg(nvl(commission_pct,0)) from employees;

count (distinct expr)返回expr非空且不重复的记录总数

select count(distinct department_id) from employees;

可以使用group by子句将表中的数据分成若干组,在select列表中所有未包含在组函数中的列都应该包含在 group by子句中。

select department_id,avg(salary) from employees group by department_id;

包含在 group by 子句中的列不必包含在select列表中:

select avg(salary) from employees group by department_id;

在group by 子句中包含多个列:

select department_id,job_id,sum(salary) from employees group by department_id,job_id;

非法使用组函数:所有包含于select列表中,而未包含于组函数中的列都
必须包含于 GROUP BY 子句中。
如下:
select department_id,count(last_name) from employees;

非法使用组函数
• 不能在where子句中使用组函数。
• 可以在having子句中使用组函数。

如下:
select department_id,avg(saslary) from employees where avg(salary)>8000 group by department_id;
过滤分组:having 子句

  1. 行已经被分组。
  2. 使用了组函数。
  3. 满足having子句中条件的分组将被显示。

select department_id,max(salary) from employees group by department_id having max(salary)>10000;

嵌套组函数

select max(avg(salary)) from employees group by department_id;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值