groupby子句的运用

groupby子句的运用

ID:34723174

大小:80.68 KB

页数:4页

时间:2019-03-10

groupby子句的运用_第1页
groupby子句的运用_第2页
groupby子句的运用_第3页
groupby子句的运用_第4页
资源描述:

《groupby子句的运用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、GROUPBY子句的应用SELECT语句是SQL的核心,用于查询数据库并检索匹配指定条件的选择数据。在SELECT语句中,可以使用GROUPBY子句按指定字段中的值分类,将行记录划分成较小的组,然后使用聚组函数返回每一个组的汇总信息,另外可以使用HAVING子句限制返回的结果集。GROUPBY子句可以将查询结果分组,并返回行记录的汇总信息。在实际应用中,如何正确、有效地使用GROUPBY子句是一个普遍存在的难题。为什么要分组?在计算机运算中分组是怎样进行的?分组中如何筛选数据?按什么字段分组?函数的使用等等问题都是决定分组查询成败的关键。下面就SELECT语句中各种情况

2、的分组查询,对GROUPBY子句的使用进行内在、全面地剖析。一、分组的意义首先说说使用分组的意义。举个例子:表SCORE有如下记录:XHKCHCJ01a7504a9001b8603a8504d6901d57现在要统计表SCORE中有多少种学号,即统计有多少学生选修了课程,每一个学生又选了几门课。对表SCORE的数据采取手工分析可以得知,尽管XH字段中有6个值,但只有01、03、04三种值,即一共有3个学生选修了课程。其中XH为01和04的学生选修了多门课(XH中01出现3次,04出现2次),在统计时只能算一个学生。按照XH字段中的01、03、04三种值分为三组,01组有

3、三条记录,03组有一条记录,04组有两条记录,所以XH为01、03、04的学生分别选修了3、1、2门课。以上只是人为的分析统计过程,在计算机运算中数据的分组实际也是这样进行的。【例】 SELECTXH,COUNT(XH)FROMSCOREGROUPBYXH命令的运行过程中,GROUPBY子句的执行步骤是:(一)、排序过程先按XH的值排序,表SCORE中XH的值相同的记录就排到一起(假设使用一张临时表TEMP保存排序后的表记录),数据如下:XHKCHCJ01a7501b8601d5703a8504a9004d69(二)、分组过程接着对临时表TEMP的记录分组,XH的值相同

4、的记录分在一组,一共分为三组。01组03组04组XHKCHCJXHKCHCJXHKCHCJ01a7503a8504a9001b8604d6901d57(三)、分类统计过程1、统计记录条数按照以上分组的结果,分别统计每一组XH字段的值的个数(即COUNT(XH)),重复值也算一次。比如01组中XH字段有三个值(01、01、01),尽管都是01,但用COUNT(XH)统计的结果是3。于是得到01、02、03组的统计结果分别是3、1、2,表明XH为01、03、04的学生分别选修了3、1、2门课。“SELECTXH,COUNT(XH)ASKCMSFROMSCOREGROUPBY

5、XH”语句运行结果如下:XHKCMS0130310422、COUNT(XH)与COUNT(DISTINCTXH)的区别实际上一组里面有几条记录,XH中就有几个值,因此可以用COUNT(XH)来统计每一组的记录条数,得到相应的课程门数。相同道理,这里用COUNT(KCH)、COUNT(CJ)或者COUNT(*)代替COUNT(XH)都可以,但不能用COUNT(DISTINCTXH),因为DISTINCT的意思是去掉XH中的重复值再统计,其结果是1。“SELECTXH,COUNT(DISTINCTXH)ASKCMSFROMSCOREGROUPBYXH”语句的运行结果则是:X

6、HKCMS011031041所以用“SELECTCOUNT(XH)FROMSCORE”语句查询的是SCORE表的记录条数,结果是“6”,其中COUNT(XH)可以用COUNT(KCH)、COUNT(CJ)或者COUNT(*)代替。“*”表示所有字段。如果想要查询表SCORE中有多少学生选修了课程,就必须用“SELECTCOUNT(DISTINCTXH)FROMSCORE”语句,结果是“3”,这里COUNT(DISTINCTXH)中的XH不能用KCH、CJ或*替换。(想想为什么?)3、分组字段的选择由以上例子可以看出,分组主要是按照对应字段中的值进行分类,值相同的放在一类

7、,然后分类统计。GROUPBY后面带的字段名就是要进行分类的字段,可以用“每一个……”式的语句来判断该选用哪个字段。例如,要统计每一个学生选修的课程门数,“每一个”后跟的是学生,所以应该用GROUPBYXH,即按XH分组,把XH相同的学生放在一组统计;如果要统计每一个(门)课程分别有多少学生选修,就应该用GROUPBYKCH,得到的是按KCH分组的结果。二、分组中聚组函数的使用在SELECT语句中可以使用GROUPBY子句将行记录划分成较小的组,然后使用聚组函数返回每一组的汇总信息,另外可以使用HAVING子句限制返回的结果集。(一)、聚

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

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

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