分组查询

一、分组函数
分组函数是一类面向集合的函数,将会对查询返回的结果集进行操作,比如统计分组的结果集的最大值、最小值或平均值等。与一些只接受单个参数的作为参数值的单行函数不同,它面向的是一个结果集合的统计,就好像是对一个结果集数据进行循环计算一样,然后返回单一的计算结果。分组函数语法如下:

aggregate_function ( [ DISTINCT | ALL ] exprssion )

1、ggregate_function ,指定分组函数的名称,比如SUM、COUNT、AVG、MAX、MIN等。
2、DISTINCT,指定分组函数在计算时,仅考虑唯一值二不用考虑重复值。
3、ALL,指定分组函数在计算时,烤炉所有的值,包含重复值,这是分组函数的默认参数。
4、Express,指定一个要进行计算的列名,或者是其他想要实现统计的表达式。
二、使用GROUP BY 子句分组
三、使用HAVING子句限制结果集
必须使用与GROUP BY 紧密结合的HACVING子句来过滤结果。一般的做法是用WHERE子句约束选择的行,用HAVING子句约束组
语法如下

SELECT column, group_function					--分组的选择列表
FROM table
WHERE condition									--使用WHERE子句过滤结果行
GROUP BY group_by_expression					--分组子句
HAVING group_condition							--使用HAVING约束分组返回的结果集
ORDER BY column;

使用HAVING子句后,分组查询的执行过程如下所示:
1、查询表中的数据,应用WHERE条件进行过滤。
2、使用GROUP BY 子句对返回的结果集进行分组。
3、应用分组函数对分组的结果集进行计算,返回单一的计算结果。
4、应用HAVING子句对分组的结果集进行过滤,得到过滤后的结果。
四、ROLLUP和CUBE
ROLLUP和CUBE子句能够用于更进一步地为分组添加统计信息。使用ROLLUP可以对分组结果生成小计信息,它对分组的结果进行分组小计,CUBE还会在ROLLUP的基础之上产生概要的统计信息。

ROLLUP 是 GROUP BY 子句的一个扩展,用来创建分组的小计和总计行。在示例中使用了GROUPING函数,该函数判断传入的参数列是否被当前行使用,用到返回0,否则是1.

SELECT deptno AS "部门编号",
job AS "职位"
(CASE
	WHEN GROUPING (deptno) = 1 THEN '总计:'
	WHEN GROUPING (job)  = 1 THEN '职别小计'
	ELSE ''
END) AS "统计栏"
SUM(sal) AS "工作总数"
FROM emp
GROUP BY ROLLUP (deptno, job)

四、使用GROUPING SETS子句
GROUPING SETS允许指定多个分组或引出有ROLLUP或CUBE产生的不想要的分组。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值