Oracle sql分组函数

这次我们了解一下分组函数,描述一下分组函数的用途,使用group by 字句对数据分组和使用having字句过滤分组结果集。

首先要知道什么是分组函数?
分组函数作用于一组数据,并对一组数据返回一个值。

说一下分组函数类型:
Avg
Count
Max
MinStddey
Sum

先说avg( 平均值 ) 和 sum ( 合计 ) 函数

可以对数值型数据使用avg 和sum函数,如:
查询某班成绩平均值: select avg(degree) from score;
查询某班总成绩分数: select sum(degree) from score;

然后是min ( 最小值 ) 和max ( 最大值 ) 函数
可以对任意数据类型的数据使用min和max函数的
如查询某班最高成绩:select max(degree) from score;
如查询某班最低成绩:select min(degree) from score;

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

如果说我突然想知道某学校的人数,就可以在此用到了,如下:
select count(*) from score
注意:count ( expr ) 返回expr 不为空的记录总数。

而且组函数忽略空值。

在组函数中使用nvl函数
Nvl函数使分组函数无法忽略空值。

Distinct 关键字
Count ( distinct expr ) 返回expr 非空且不重复的记录总数
如:select count(distinct degree) from score;

分组数据
分组数据: group by 字句语法
可以使用 group by 字句将表中的数据分成若干组,如下:
select sno from score
group by sno;

在select 列表中使用未包含在组函数中的列都应该包含在group by 字句中。
select sno, avg(degree) from score
group by sno;
注意:包含在group by 字句中的列表不必包含在select 列表中

使用多个列分组
在group by 字句中包含多个列
select sno, cno from score
group by sno,cno;

非法使用组函数
所有包含于select 列表中,而未包含于组函数中的列都必须包含于 group by 字句中,
不能在 where 字句中使用组函数,可以在havinc 字句中使用组函数。

过滤分组:having 字句
使用having 过滤分组:
1.行已被分组
2.使用了组函数
3.满足having 字句中条件的分组将被显示
select max(degree)
from score
having max(degree)>70;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值