3、分组与组函数 Group by子句 将查询结果集按某一列或多列的值分组,值相等 的为一组,一个分组以一个元组的形式出现 只有出现在 Group by子句中的属性,才可出现在 Selec子句中 例:统计各系学生的人数。 Select sdept, count(*)as stu count From student Group By sdept
Group By子句 –将查询结果集按某一列或多列的值分组,值相等 的为一组,一个分组以一个元组的形式出现 –只有出现在Group By子句中的属性,才可出现在 Select子句中 例:统计各系学生的人数。 Select sdept,count(*) as stu_count From Student Group By sdept 3、分组与组函数
组函数: 1)组函数的使用格式: COUNT([ DISTINCT|AL]*列名) SUM( IDISTINCT|ALL]列名) AVG([ DISTINCT|ALL]列名) MAX([ DISTINCT|ALL]列名) MIN([ DISTINCT|ALL]列名)
组函数: 1)组函数的使用格式: • COUNT([DISTINCT|ALL] *|列名) • SUM([DISTINCT|ALL] 列名) • AVG([DISTINCT|ALL] 列名) • MAX([DISTINCT|ALL] 列名) • MIN([DISTINCT|ALL] 列名)
2)组函数可用于 seLeCt-子句中的目标列 表中,或在 HAVING子句的分组表达式 中用作条件。 3)对分出的每一组用 HAVING进行筛选, 筛选条件要用到组函数
2) 组函数可用于SELECT子句中的目标列 表中,或在HAVING子句的分组表达式 中用作条件。 3) 对分出的每一组用HAVING进行筛选, 筛选条件要用到组函数
例1:查询各个课程号与相应的选课人数 SELECT Cno, COUNT(Sno) FROM SC GROUP BY Cno 例2:查男女生人数 SELECT Sex, COUNT(SNO) COUNTSNO FROM stu GROUP BY sex
例1: 查询各个课程号与相应的选课人数 SELECT Cno, COUNT(Sno) FROM SC GROUP BY Cno; 例2: 查男女生人数 SELECT sex , COUNT(SNO) COUNTSNO FROM stu GROUP BY sex;
例3:求选修了课程的学生人数 SELECT COUNT (DISTINCT $#) FROM SC 例4:求选修各门课的人数及平均成绩 SELECT C#, COUNT (S#), AVG (ALL GR) FROM SC GRoUP bY C+
例3:求选修了课程的学生人数 SELECT COUNT(DISTINCT S#) FROM SC; 例4:求选修各门课的人数及平均成绩 SELECT C#, COUNT(S#), AVG(ALL GR) FROM SC GROUP BY C#;