sql分组函数使用

sql分组函数使用

ID:34074366

大小:127.00 KB

页数:11页

时间:2019-03-03

sql分组函数使用_第1页
sql分组函数使用_第2页
sql分组函数使用_第3页
sql分组函数使用_第4页
sql分组函数使用_第5页
资源描述:

《sql分组函数使用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、sql分组函数使用关键字:sql分组函数使用转自:http://book.csdn.net/bookfiles/235/10023510864.shtml在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析。8.3.1GROUPBY子句创建分组创建分组是通过GROUPBY子句实现的。与WHERE子句不同,GROUPBY子句用于归纳信息类型,以汇总相关数据。而为什么要使用GROUPBY子句创建分组呢?可通过下面这个简单例子来说明。实例17单一分组的查询假如要从TEACHER表中查询所有男教师的平均工资,用前面介绍的聚合函数AVG(),

2、实现代码如下:SELECTAVG(SAL)ASboyavg_salFROM   TEACHERWHERE  TSEX='男'运行结果如图8.18所示。图8.18TEACHER表中查询所有男教师的平均工资而如果同时需要查询所有女教师的平均工资,该如何处理呢?显然,采用上述方法只能在WHERE子句中改变查询条件,重新查询。而如果要在一次查询中,同时得到二者的查询结果,就需要以性别为基准,将表中的所有数据记录分组,即男教师组和女教师组,并分别对两组数据进行分析,即计算工资(SAL列)的平均值。实现上述功能,就需要使用分组子句GROUPBY。包括GROUPBY子句的查询就称为组合查询

3、。语法如下。SELECT                            column,SUM(column)11/11FROM           tableGROUPBY      column说明:GROUPBY子句依据column列里的数据对行进行分组,即具有相同的值的行被划为一组。它一般与聚合函数同时使用。当然,这里的SUM()函数也可以是其他聚合函数。所有的组合列(GROUPBY子句中列出的列)必须是来自FROM子句列出的表,不能根据实际值、聚合函数结果或者其他表达式计算的值来对行分组。实例18GROUPBY子句分组查询从TEACHER表中查询所有男教师的平

4、均工资和所有女教师的平均工资,实现代码如下。SELECT         TSEX+'教师'ASTEACHER,AVG(SAL)ASavg_salFROM                               TEACHERGROUPBY      TSEX运行结果如图8.19所示。图8.19TEACHER表中所有男教师和所有女教师的平均工资下面分析一下DBMS执行该实例的步骤。    DBMS首先执行FROM子句,将表TEACHER作为中间表。    如果有WHERE子句,则根据其中的搜索条件,从中间表中去除那些值为False的列。这里没有WHERE子句,所以跳过该步

5、。    根据GROUPBY子句指定的分组列即TSEX,将中间表中的数据进行分组。这里TSEX只有“男”和“女”,因此中间表中的数据被分成了两组,一组中TSEX的值为“男”,另一组中TSEX的值为“女”。    为每个行组计算SELECT子句中的值,并为每组生成查询结果中的一行。对于TSEX值为“男”的行组,SELECT子句中首先执行“TSEX+'教师'”,得到“男教师”列值,再执行“AVG(SAL)”,求得该行组中的SAL的均值,将这两个值作为结果表中的一条记录。同样,对TSEX值为“女”的行组,进行类似的操作得到另一条记录。11/118.3.2GROUPBY子句根据多列组

6、合行上节介绍的GROUPBY子句进行组合查询,在GROUPBY子句中只有一列,它是组合查询的最简单形式。如果表中的行组依赖于多列,只要在查询的GROUPBY子句中,列出定义组所需的所有列即可。实例19GROUPBY子句根据多列组合行从TEACHER表中查询各个系男教师和女教师的人数。实现代码:SELECT         DNAME,TSEX,COUNT(*)ASTOTAL_NUMFROM                               TEACHERGROUPBY      DNAME,TSEXORDERBY      DNAME运行结果如图8.20所示。图8.

7、20TEACHER表中各系男教师和女教师的人数从结果中可以发现,只有计算机系列出了男教师和女教师的人数。而别的系,只列出了一个值,这是因为,在TEACHER表中,这些系中的教师只有一种性别,如生物系只有两个女教师,而没有男教师,系统就认为该行记录为NULL,所以生物系的男教师的人数记录就不包含在结果表中。8.3.3ROLLUP运算符和CUBE运算符在使用GROUPBY子句根据多列组合行时,可以在GROUPBY子句中使用ROLLUP运算符和CUBE运算符,扩展查询结果。两者的主要不同在于,CUBE运算符扩

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。