ORACLE---分组查询

分组查询

概念:把分散的数据按某种规则将数据分成不同的组、或所有数据整体作为一个组,对组级别的数据进行分析,每组得到一个返回值。

五个聚合函数:

SUM():求合计值
MAX():求最大值
MIN():求最小值
AVG():求平均值
COUNT():计数

注意:

1)所有聚合函数都是针对非空值进行的统计
2)COUNT()的特殊用法:若是在不确定哪些字段不含空值的情况下统计总数据量,可以使用COUNT(1)或COUNT(*)来统计
3)SUM和AVG只针对数值,其他三个可针对任意类型

思考:哪些聚合函数可能出现空值,哪些聚合函数不可能出现空值

当一列全为空值时,聚合函数除了COUNT()外都会出现空值。 COUNT()不返回空值,返回0.

语法:
SELECT COL_LIST,聚合函数,常量
FROM TB_NAME
GROUP BY COL_LIST;

语法解释:
对数据源TB_NAME按照COL_LIST分组,统计各分组的分析情况

注意:

1.对于含有GROUP BY子句的SQL语句,SELECT子句中仅允许出现
1)GROUP BY中出现过的字段
2)聚合函数
3)常量
2.对于不含有GROUP BY子句但SELECT子句中含有聚合函数的情况,SELECT子句中除聚合函数与常量外,不能再出现其他字段
3.GROUP BY 之后的字段没有优先级
字段放在前后,不影响最终分组结果

分组过滤

语法:
SELECT COL_LIST,聚合函数,常量
FROM TB_NAME
GROUP BY COL_LIST
HAVING 以聚合函数为基础的条件判断;

语法解释:
对数据源TB_NAME按照COL_LIST分组,统计各分组的分析情况,并对分析结果进行筛选

WHERE与HAVING的区别和联系

1.都是做条件筛选用的
2.WHERE不必和GROUP BY连用,HAVING必须和GROUP BY连用
3.WHERE筛选的是针对FROM后表的数据,HAVING是针对GROUP BY分组之后的数据进行筛选
4.WHERE中的部分条件可以写在HAVING中,但非常影响执行效率,不建议使用
5.只有在GROUP BY子句中出现的字段,才能够由WHERE子句中转写到HAVING子句中

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值