数据库系统原理与设计(万常选版)总复习CH3 SQL语言_2-复习.pptVIP

数据库系统原理与设计(万常选版)总复习CH3 SQL语言_2-复习.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库系统原理与设计(万常选版)总复习CH3 SQL语言_2-复习.ppt

3.5 聚合查询 SQL查询提供了丰富的数据分类、统计和计算的功能 统计功能通过聚合函数来实现 分类功能通过分组子句来实现 统计和分组结合在一起实现丰富的查询功能 3.5.1 聚合函数 3.5.2 分组聚合 3.5.3 复杂查询 3.5.1 聚合函数 SQL提供的聚合函数(aggregate function)包括: count( [DISTINCT | ALL] {* | 列名} ):统计关系的元组个数或一列中值的个数; sum( [DISTINCT | ALL] 列名 ):统计一列中值的总和(此列必须为数值型); avg( [DISTINCT | ALL] 列名 ):统计一列中值的平均值(此列必须为数值型); max( [DISTINCT | ALL] 列名 ):统计一列中值的最大值; min( [DISTINCT | ALL] 列名 ):统计一列中值的最小值。 指定DISTINCT谓词,表示在计算时首先消除列名取重复值的元组,然后再进行统计 指定ALL谓词或没有DISTINCT谓词,表示不消除列名取重复值的元组 3.5.1 聚合函数 [例3.47] 查询学生总人数。 SELECT count(*) FROM Student 或 SELECT count(*) 学生人数 FROM Student [例3.48] 查询所有选课学生的人数。 SELECT count(studentNo) 学生人数 FROM Score 查询结果是40 由于一个学生可以选修多门课程,学号存在重复,为消除重复的元组,使用DISTINCT短语,将查询修改为: SELECT count(DISTINCT studentNo) 学生人数 FROM Score 查询结果为10 3.5.1 聚合函数 [例3.49] 查询学号为“0800005”同学所选修课程的总学分。 SELECT sum(creditHour) 总学分 FROM Score a, Course b WHERE studentNo=0800005 AND a.courseNo=b.courseNo 在聚合函数遇到空值时,除count(*)外所有的函数皆跳过空值,只处理非空值。 3.5.2 分组聚合 在SQL查询中,往往需要对数据进行分类运算(即分组运算) SQL通过GROUP BY和HAVING子句实现分组运算 GROUP BY对查询结果按某一列或某几列进行分组,值相等的分为一组; HAVING对分组的结果进行选择,仅输出满足条件的组。该子句必须与GROUP BY子句配合使用 3.5.2 分组聚合 [例3.50] 查询每个同学的选课门数、平均分和最高分。 SELECT studentNo, count(*) 门数, avg(score) 平均分, max(score) 最高分 FROM Score GROUP BY studentNo 结果按学号StudentNo分组,将具有相同StudentNo值的元组作为一组 然后对每组进行相应的计数、求平均值和求最大值 3.5.2 分组聚合 [例3.51] 查询平均分在80分以上的每个同学的选课门数、平均分和最高分。 SELECT StudentNo, count(*) 门数, avg(score) 平均分, max(score) 最高分 FROM Score GROUP BY StudentNo HAVING avg(score)=80 3.5.2 分组聚合 [例3.52] 查询成绩最高分的学生的学号、课程号和相应成绩 SELECT studentNo, courseNo, score FROM Score WHERE score=( SELECT max(score) FROM Score ) 聚合函数可直接用在HAVING子句中(如例3.51),也可用于子查询中(如例3.52),但在WHERE子句中不可以直接使用聚合函数。如下语句是不正确的: SELECT * FROM Score WHERE score=max(score) 3.5.3 复杂查询 SQL语句可构造非常复杂的查询,可将选择、投影、连接、子查询、分组聚合等操作混合使用,从而完成几乎所有的查询操作 [例3.54] 查询至少选修了28个学分的同学的学号、姓名以及所选修各门课程的课程名、成绩和学分,并按学号排序输出 SELECT a.studentNo, studentName, co

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档