交通信息系统 第八章 结构化查询语言SQL1.ppt

交通信息系统 第八章 结构化查询语言SQL1.ppt

* 3、ORDER BY子句(对查询结果排序) 使用ORDER BY子句 可以按一个或多个属性列排序 升序:ASC;降序:DESC;缺省值为升序 当排序列含空值时 ASC:排序列为空值的元组最后显示 DESC:排序列为空值的元组最先显示 * 例4.44 查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。 SELECT SNO,GRADE FROM SC WHERE CNO=’3’ ORDER BY GRADE DESC; Sno Grade ------- ------- 95010 95024 95007 92 95003 82 95010 82 95009 75 95014 61 95002 55 查询结果 * 聚合函数是涉及整个关系的另一类运算操作,通过聚合函数,可以把某一列中的值形成单个值。 5类主要聚合函数: 计数 COUNT([DISTINCT|ALL] *) COUNT([DISTINCT|ALL] 列名) 计算总和 SUM([DISTINCT|ALL] 列名) 计算平均值 AVG([DISTINCT|ALL] 列名) 4.3.3 聚合函数 * 求最大值 MAX([DISTINCT|ALL] 列名) 求最小值 MIN([DISTINCT|ALL] 列名) DISTINCT短语:在计算时要取消指定列中的重复值 ALL短语:不取消重复值 ALL为缺省值 * 例4.47 查询选修了课程的学生人数。 SELECT COUNT(DISTINCT SNO) FROM SC; 学生每选修一门课,在SC中都有一条相应的记录。一个学生要选修多门课程,为避免重复计算学生人数,必须在COUNT函数中用DISTINCT短语。 例4.48 计算选修l号课程的学生平均成绩。 SELECT AVG(GRADE) FROM SC WHERE CNO=’1’; 例4.49 查询选修l号课程的学生最高分数。 SELECT MAX(GRADE) FROM SC WHER CNO=’1’; * 使用GROUP BY子句分组 细化集函数的作用对象 未对查询结果分组,聚合函数将作用于整个查询结果 对查询结果分组后,聚合函数将分别作用于每个组 4.3.4 对查询结果分组 * 这三个数取平均值 第4-6分数取平均值 最后三个数取平均值 有一个学员参加考试 例如,求每门课的平均成绩。 * 分组查询—GROUP BY SELECT CourseID, AVG(Score) AS 课程平均成绩 FROM Score GROUP BY CourseID * 例4.51 求各个课程号及相应的选课人数。 SELECT CNO,COUNT(SNO) FROM SC GROUP BY CNO; 该语句对查询结果按CNO的值分组,所有具有相同CNO值的元组为一组,然后对每一组作用聚合函数COUNT计算,以求得该组的学生人数。 结果 Cno COUNT(Sno) 1 22 2 34 3 44 4 33 5 48 * 注意: GROUP BY子句的作用对象是查询的中间结果表 分组方法:按指定的一列或多列值分组,值相等的为一组 使用GROUP BY子句后,SELECT子句的列名列表中只能出现分组属性和聚合函数。 * 使用HAVING短语筛选最终输出结果。 例 查询选修了3门以上课程的学生学号。 SELECT Sno FROM SC GROUP BY Sno

文档评论(0)

1亿VIP精品文档

相关文档