- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL Server 2005 数据库基础项目五 学生成绩查询 模块 5-1 统计查询 学习目标工作任务任务1 各类职称的教师人数的统计 【任务分析】 根据任务要求,此查询要用到的数据库为student,用到的表为teacher。最后要显示的信息为两列,一列是职称的名称,一列为该类职称的教师人数。职称列在表中对应的字段为ttitle,而人数是需要统计的信息,这就需要用到聚合函数COUNT了。任务1 各类职称的教师人数的统计【程序代码】USE studentGOSELECT ttitle AS 职称,COUNT(*) AS 人数FROM teacherGROUP BY ttitle任务1 各类职称的教师人数的统计【执行结果】任务2 统计各课程的最高分、最低分和平均成绩【任务分析】 根据任务要求,此查询要用到的数据库为student,用到的表为choice。最后要显示的信息为四列,即课程编号、最高分、最低分和平均分。其中最高分、最低分和平均分都不是表中的列,要利用聚合函数MAX、MIN和AVG显示信息。任务2 统计各课程的最高分、最低分和平均成绩【程序代码】USE studentGOSELECT cno AS 课程编号,MAX(grade) AS 最高分,MIN(grade) AS 最低分,AVG(grade) AS 平均分FROM choiceGROUP BY cno任务2 统计各课程的最高分、最低分和平均成绩【执行结果】任务3 查询选修了4门以上(包括4门)选修课的学生【任务分析】 根据任务要求,此查询要用到的数据库为student,用到的表为choice。最后要显示学生学号和课程门数,这里要筛选出的学生是选修了四门课程及以上的学生学号。要完成这个任务,首先可以统计出每个学生选修的课程门数,然后将选修课程门数大于等于4的学生筛选出来。这样就要用到GROUP BY和HAVING子句,HAVING子句可以对分类汇总的结果进行筛选任务3 查询选修了4门以上(包括4门)选修课的学生【任务代码】USE studentGOSELECT sno AS 学号,COUNT(*) AS 课程门数FROM choiceGROUP BY snoHAVING COUNT(*)=4任务3 查询选修了4门以上(包括4门)选修课的学生【执行结果】知识说明 聚合函数 聚合函数属于系统内置函数之一,它与前面介绍的数学函数、字符串函数等内置函数不同,它能够对一组值执行计算并返回单一的值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。除 COUNT 函数之外,聚合函数一般忽略空值。知识说明聚合函数的种类 表5?1常用聚合函数的功能聚合函数功能AVG返回组中值的平均值COUNT返回组中项目的数量MAX返回表达式的最大值MIN返回表达式的最小值SUM返回表达式中所有值的和STDEV返回表达式中所有值的统计标准偏差VAR返回表达式中所有值的统计标准方差知识说明 GROUP BY 子句 GROUP BY语句从英文的字面意义上理解就是“根据(BY)一定的规则进行分组(GROUP)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 HAVING 子句 用于在包含 GROUP BY 子句的 SELECT 语句中指定显示哪些分组记录。在 GROUP BY 对记录进行组合之后,将显示满足 HAVING 子句条件的 GROUP BY 子句进行分组的任何记录。模块 5-2 多表查询——连接查询学习目标工作任务任务1 查询孙晓龙的所有选修课的成绩【任务分析】 此查询要用到的数据库为student,用到的表为student和choice。最后要显示的信息为两列,一列是课程编号,一列为课程成绩。虽然这两列在choice表中都有,但是本例中要显示的是名叫孙晓龙的学生的选课信息。 解决这个问题可以将student和choice两表进行内连接操作,然后再筛选出满足条件的记录,即姓名为孙晓龙的学生的选课信息。任务1 查询孙晓龙的所有选修课的成绩【程序代码】USE studentGOSELECT cno,gradeFROM student INNER JOIN choiceON student.sno=choice.snoWHERE sname=孙晓龙 任务1 查询孙晓龙的所有选修课的成绩【执行结果】任务2 查询选修了课程编号为“0101001”的学生的姓名和成绩【任务分析】 根据任务要求,此查询要用到的数据库为student,用到的表为student和choice。最后要显示的信息为两列,一列是学生姓名,一列为课程成绩。 解决这个问题可以将student和choice两表进行内连接操作,然后再筛选出满
文档评论(0)