Oracle分组函数

作者:黄钟瑶

完成时间:2019年4月16日

开发工具与技术:Oracle

 

分组函数:对指定一组数据进行分组并返回一个值。使用分组函数操作数据能够更直观的了解数据,方便视野。

组函数类型:AVG(平均数)、COUNT(总数)、MAX(最大值)、MIN(最小值)、SUM(合计)

介绍一下简单用法

AVG(平均数) select avg(salary) from employees

COUNT(总数) select count(salary) from employees

SUM(合计) select sum(salary) from employees

AVG、SUM属于算术上的,因此比较适合用于数值型数据,Count函数和Sum函数在某种需要时,执行效果有可能相似

MAX(最大值) select max(salary) from employees

MIN(最小值) select min(salary) from employees

Max和Min、Count不受数据类型的限制

这几种函数可以根据需要组合起来使用

组函数忽略空值不算

 

 

但是NVL函数可以使组函数不忽略空值,计算为0

 

分组数据;Group by,查询将不是组函数的列包含在Group by子句中进行分组,否则数据库认为非法使用组函数,会出错。Group by可以将多个列进行分组,但是where不能组合组函数使用

SELECT   employee_id,last_name, AVG(salary)

FROM     employees

GROUP BY employee_id,last_name ;

如果列全是组函数,则默认Group by分组,Group by可写可不写

SELECT   max(salary),AVG(salary)

FROM     employees

GROUP BY employee_id,last_name ;

过滤分组:Having,使用Having子句前提是查询列表中必须要有组函数存在,如果没有组函数,则不构成Having子句。Having经常与Group by一起使用。

例如:查询员工的最高工资大于12000的

SELECT   employee_id, MAX(salary)

FROM     employees

GROUP BY employee_id

HAVING   MAX(salary)>12000 ;

嵌套组函数:将两个组函数组合起来合理使用达到理想效果,也须使用Group by进行分组

例如:查询部门的工资的最小平均值

select min(avg(salary)) from employees

group by department_id;

 

总结:学了一些基本的分组函数,感觉对子句的使用要合理。子句的执行顺序合理,也不能忽略语法的限制。嵌套组函数在查询一些简单数据时也是比较方便的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值