groupby详解完美例句

groupby详解完美例句

ID:8960105

大小:77.00 KB

页数:7页

时间:2018-04-13

groupby详解完美例句_第1页
groupby详解完美例句_第2页
groupby详解完美例句_第3页
groupby详解完美例句_第4页
groupby详解完美例句_第5页
资源描述:

《groupby详解完美例句》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、GROUPBY语句1.GroupBy语句简介:  GroupBy语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。  2.GroupBy的使用:  上面已经给出了对GroupBy语句的理解。基于这个理解和SQLServer2000的联机帮助,下面对GroupBy语句的各种典型使用进行依次列举说明。  2.1GroupBy[Expressions]:  这个恐怕是GroupBy语

2、句最常见的用法了,GroupBy+[分组字段](可以有多个)。在执行了这个操作以后,数据集将根据分组字段的值将一个数据集划分成各个不同的小组。比如有如下数据集,其中水果名称(FruitName)和出产国家(ProductPlace)为联合主键:  FruitNameProductPlacePriceAppleChina$1.1AppleJapan$2.1AppleUSA$2.5OrangeChina$0.8BananaChina$3.1PeachUSA$3.0 如果我们想知道每个国家有多少种水果,

3、那么我们可以通过如下SQL语句来完成:  SELECTCOUNT(*)AS水果种类,ProductPlaceAS出产国  FROMT_TEST_FRUITINFO  GROUPBYProductPlace  这个SQL语句就是使用了GroupBy+分组字段的方式,那么这句SQL语句就可以解释成“我按照出产国家(ProductPlace)将数据集进行分组,然后分别按照各个组来统计各自的记录数量。”很好理解对吧。这里值得注意的是结果集中有两个返回字段,一个是ProductPlace(出产国),一个是水

4、果种类。如果我们这里水果种类不是用Count(*),而是类似如下写法的话:  SELECTFruitName,ProductPlaceFROMT_TEST_FRUITINFOGROUPBYProductPlace  那么SQL在执行此语句的时候会报如下的类似错误:  选择列表中的列'T_TEST_FRUITINFO.FruitName'无效,因为该列没有包含在聚合函数或GROUPBY子句中。  这就是我们需要注意的一点,如果在返回集字段中,这些字段要么就要包含在GroupBy语句的后面,作为分组的

5、依据;要么就要被包含在聚合函数中。我们可以将GroupBy操作想象成如下的一个过程,首先系统根据SELECT语句得到一个结果集,如最开始的那个水果、出产国家、单价的一个详细表。然后根据分组字段,将具有相同分组字段的记录归并成了一条记录。这个时候剩下的那些不存在于GroupBy语句后面作为分组依据的字段就有可能出现多个值,但是目前一种分组情况只有一条记录,一个数据格是无法放入多个数值的,所以这里就需要通过一定的处理将这些多值的列转化成单值,然后将其放在对应的数据格中,那么完成这个步骤的就是聚合函数。

6、这就是为什么这些函数叫聚合函数(aggregatefunctions)了。  2.2GroupByAll[expressions]:  GroupByAll+分组字段,这个和前面提到的GroupBy[Expressions]的形式多了一个关键字ALL。这个关键字只有在使用了where语句的,且where条件筛选掉了一些组的情况才可以看出效果。在SQLServer2000的联机帮助中,对于GroupByAll是这样进行描述的:  如果使用ALL关键字,那么查询结果将包括由GROUPBY子句产生的所有

7、组,即使某些组没有符合搜索条件的行。没有ALL关键字,包含GROUPBY子句的SELECT语句将不显示没有符合条件的行的组。  其中有这么一句话“如果使用ALL关键字,那么查询结果将包含由GroupBy子句产生的所有组...没有ALL关键字,那么不显示不符合条件的行组。”这句话听起来好像挺耳熟的,对了,好像和LEFTJOIN和RIGHTJOIN有点像。其实这里是类比LEFTJOIN来进行理解的。还是基于如下这样一个数据集:  FruitNameProductPlacePriceAppleChina

8、$1.1AppleJapan$2.1AppleUSA$2.5OrangeChina$0.8BananaChina$3.1PeachUSA$3.0 首先我们不使用带ALL关键字的GroupBy语句:  SELECTCOUNT(*)AS水果种类,ProductPlaceAS出产国  FROMT_TEST_FRUITINFO  WHERE(ProductPlace<>'Japan')  GROUPBYProductPlace  那么在最后结果中由于Japan不符合where语句,所以分组

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

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

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