第五章 简单数据库应用系统设计与开发 115
3.3 数据维护
4.2.1 实例一
1. 问题的提出
为了丰富学生的课余文化生活,光明中学学生会想对全校学生的兴趣 爱好有一个整体了解。因此,他们需要依据“学生兴趣爱好”数据库,对 学生兴趣爱好的分布情况进行统计分析。
2. 问题分析
学生的兴趣爱好涉及书籍、绘画、音乐、运动、影视、游戏、旅游七大 类,要得到学生兴趣爱好的分布情况,需要从以下两个方面考虑。
(1)兴趣爱好类别的分布情况。通过统计每位学生的兴趣爱好种类,分 析学生兴趣爱好的广泛性。
(2)每一种兴趣爱好的分布情况。通过统计每种兴趣爱好的人数,分 析学生兴趣爱好的特点。
3. 操作步骤
(1)使用计数方法对“学生兴趣爱好”数据库中的“学生基本情况”表 进行统计,共得出 1 007 名学生参加了此次调查活动。SQL 语句如下:
■
学会从统计数据中发现规律和结论
■
体验从数据库中发现信息与规律的乐趣
SELECT Count(学号) AS 参加调查人数 FROM 学生基本情况;
为了获得学生的爱好类别的数量分布情况,需要经过步骤(2)到步骤
(4)三步操作。
(2)统计每位学生的爱好涉及哪些类别。
这里涉及“学生基本情况”表、 “学生爱好”表、 “爱好列表”表、 “爱 好类别”表中的信息。可以利用 SELECT 语句,以这四个表为基础,查询每 位学生的爱好类别。SQL 语句如下:
SELECT DISTINCT 学生基本情况.学号, 爱好类别.名称 FROM 学生基本情况,爱好列表,学生爱好,爱好类别
WHERE 爱好列表.爱好编号 = 学生爱好.爱好编号 AND 学生基本情况.学号 = 学 生爱好.学号 AND 爱好类别.类别编号=爱好列表.类别编号;
保存这个统计为“学生爱好类别” 。
(3)统计每位学生涉及的爱好类别有多少种。
这里涉及步骤(2)得到的统计“学生爱好类别”中的数据,引用这个
SELECT爱好涉及类别 AS 学生爱好数量,Count(爱好涉及类别)AS 数量统计 FROM 学生爱好类别数量
GROUP BY 爱好涉及类别;
统计结果如图 4-22 所示。
图4-22 学生爱好数量分布
(5)统计“学生兴趣爱好”数据库中包含了多少个爱好。
为了统计方便,在分析各个爱好时将忽略数据库中各类爱好中的“其 他” 。因此,在统计前需要通过查询去掉“爱好列表”中的“其他”爱好,
SQL 语句如下:
将该查询结果保存为“爱好列表整理” 。
在“爱好列表整理”的基础上进行爱好个数的统计。SQL 语句如下:
SELECT 爱好列表.爱好编号,爱好列表.名称,爱好列表.类别编号 FROM 爱好列表
WHERE 爱好列表.名称<>"其他";
SELECT 学号, Count(名称)AS 爱好涉及类别 FROM 学生爱好类别
GROUP BY 学号;
保存这个统计为 “学生爱好类别 数量” 。 查看运行结果如图4-21所示。
(4)统计爱好类别数量的分布 数据。
这里涉及步骤(3)得到的统计
“学生爱好类别数量”中的数据,引 用这个统计中的爱好涉及类别,并 利用SELECT…Count 语句,统计得 到爱好数量的人数分布。 SQL 语句
如下:
图4-21 每位学生爱好数量的统计统计中学号和爱好类别名称,并利用 SELECT…Count 语句,统计得到每一
位学生爱好涉及的类别数量。SQL 语句如下:
SELECT Count(爱好列表整理.爱好编号)AS 爱好的个数 FROM 爱好列表整理;
将该查询统计保存为“爱好个数”。由结果可知数据库中包含了 49 个 爱好。
为了得到学生在每一种兴趣爱好的分布情况,还需要经过如下两步。
(6)统计每种爱好涉及了多少学生。
这里涉及“爱好列表整理”和“学生爱好”表中的信息。以这两个表为 基础,利用SELECT…Count 语句,查询每个兴趣爱好有多少学生涉及。 SQL 语句如下:
SELECT DISTINCT 爱好列表整理.名称, Count(学生爱好.学号) AS 人数 FROM 爱好列表整理, 学生爱好
WHERE 爱好列表整理.爱好编号=学生爱好.爱好编号
GROUP BY 爱好列表整理.名称
ORDER BY Count(学生爱好.学号) DESC;
将 这个 查询 统计 保存 为“爱 好 涉 及 人 数” 。可 以 看 到 如图 4-23 所 示 结果。
孩子们有他 们独到的看法和 见解。教师和家 长要想能与孩子 顺畅沟通,就要 学着“用孩子的 眼光看世界”。所 以,能够借助统 计方法较好地了 解学生的兴趣爱 好情况非常重要。
图4-23 每个爱好涉及人数
SELECT 爱好涉及人数.名称, Fix(人数/100)AS 数据分段
FROM 爱好涉及人数;
(7)针对“爱好涉及人数”统计,再统计出它的分布情况。首先输入 如下 SQL 语句:
将它保存为“爱好人数数据分段” 。然后输入如下 SQL 语句:
接右边图
接左边图
SELECT [数据分段]*100 & "-" & ([数据分段]+0.99)*100 AS 分段, Count(爱好人 数数据分段.数据分段) AS 个数
FROM 爱好人数数据分段
GROUP BY [数据分段]*100 & "-" & ([数 据分段]+0.99)*100
ORDER BY [数据分段]*100 & "-" & ([数 据分段]+0.99)*100 DESC;
光明中学学生会为了成立同学们感兴趣的社团,准备从“学生兴趣爱好”数据 库中发现一些信息,以判断可以成立哪些社团。请你通过分析该数据库,做出一个 参考方案。