精通MS-ACCESS SQL之基础篇(07)
时 间:2017-11-17 17:12:09
作 者:Big Young ID:252 城市:襄阳
摘 要: ACCESS SQL 的 GROUP BY 的用法。
正 文:
第七节 对查询记录进行分组统计
对于通过调查得到的数据,虽然经过审核、排序等整理手段给予了处理,但由于数据庞杂,还不能直接进入对数据的分析阶段。在此之前,有必要对数据进行分组处理,以反映数据分布的特征及规律。从一定意义上说,数据整理的中心任务就是分组和编制频数分布。
数据分组是根据统计研究的需要,将原始数据按照某种标准划分成不同的组别,分组后的数据称为分组数据。数据分组的主要目的是观察数据的分布特征。数据分组后再计算出各组中数据出现的的频数,就形成了一张频数分布表。
对于非数值型数据就是依据属性的不同将其划分为若干组,对于数值型数据就是依据数值的不同将数据划分为若干组。在社会经济统计研究中,数据分组的作用在于:划分现象的类型、研究总体的结构与现象之间的依存关系。
在ACCESS SQL中分组是通过“GROUP BY”子句来实现的。
一、“GROUP BY”的一般语法
在查询中,“GROUP BY”子句使用频率非常高,其基本语法为:
Select 字段1, 汇总函数(字段2) FROM 表名 GROUP BY 字段1;
这里“字段1”是分组要依据的字段,“字段2”是与合计函数一起要对其进行统计的字符段,“表名”就是与以前讲的一样是要被查询的数据库表的名称。汇总通常是与SQL的合计函数一起应用来实现汇总统计的。合计函数,又叫汇总函数或叫聚合函数,ACCESS SQL提供了“SUM、AVG、MAX、MIN、COUNT等汇总函数。
二、通过设置一个字段条件进行分组汇总
我们还是打开前面创建并使用的示例数据库“TEST.ACCDB”,用“Select * FROM 学生信息;”来查询学生信息表,结果如图7-1。
图7-1:查看学生信息表中的全部记录
这个示例表中的记录比较少,我们可以一眼看出有多少条记录,如果记录比较多就要进行统计了,我们用如下SQL语句:
Select COUNT(*) AS 记录总数 FROM 学生信息;
运行后会统计出共有10条记录,如图7-2所示。
图7-2:汇总统计的记录总数
现在如果我们想要了解全部学生中男女各有多少人,就是需要用“Select 性别, COUNT(姓名) AS 人数 FROM 学生信息 GROUP BY 性别;”这样的SQL语句进行查询,其查询结果如图7-3。
图7-3:按一个字段分组查询统计
三、根据多个列的字段进行分组的统计
在现实的统计工作中,需求是多样的,有时依据一个字段分组并不能满足要求,需要同时依据多个字段进行分组统计。我们还是以“学生信息”表为例来说明,如果想统计表中每个民族的男女生人数,我们就要用到“性别”及“民族”这两个字段了,如:“Select 民族, 性别, COUNT(性别) AS 人数 FROM 学生信息 GROUP BY 民族, 性别;”,组成一个查询,示例如图7-4。
图7-4:多个字段条件进行查询
查询后的结果如图7-5所示:
图7-5:多个字段条件查询结果
不过这种查询看起来也不是很直观,如果想更直观的查看,就要用到以后才会学到的交叉表查询了。
四、设置区间条件进行分组查询
有时候在统计中,还要求根据时间段或者区间来进行汇总统计,这时我们还需要用到ACCESS中的VBA涵数,用“GROUP BY”与相关函数结合进行汇总统计,如,我们要统计“学生信息”表中不同年代的学生中各民族各有多少人,可以用“Select IIF(出生日期>=#1980-1-1# AND 出生日期<=#1989-12-31#,"80年代","90年代") AS 年代, 民族, COUNT(民族) AS 人数 FROM 学生信息 GROUP BY IIF(出生日期>=#1980-1-1# AND 出生日期<=#1989-12-31#,"80年代","90年代"), 民族;”这样的SQL语句,如图7-6所示。
图7-6:根据区间条件创建的分组查询
运行该查询,我们就可以得到每个年代中每个民族的学生的人数,如图7-7所示。
图7-7:按区间条件分组查询的结果
好了,分组查询今天就学到这里,其它内容稍后继续……
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)