1、数据库练习三答案统计查询 统计查询是指使用关键字配合select语句查询时,在查询后的结果中出现了不是原始数据表中数据的记录信息,这些记录信息是根据需求,借助不同关键字对原始数据表中数据信息做计算处理而得到的。 1 聚合函数查询 2 查询结果排序 排序操作可以使用order by语句实现,它可以出现在from语句或者where语句的后面,语法格式如下: order by 字段名1 , 字段名2? asc | desc 3.查询结果分组小计 分组小计语句group by可以出现在from语句或者where语句后面,语法格式如下: group by 字段名列表 having 条件表达式 ? 后面。
2、 ? ? 课堂题目: 1、 统计“课程表”中总的课程数,总学分,最高学分,最低学分,平均学分(无列名) select COUNT(*),SUM(学分),MAX(学分),MIN(学分) from 课程表 having语句对分组小计后的结果做进一步的条件筛选,跟随在group by 通常在select语句后面加聚合函数来表示求值小计。 出现在select语句后的字段名,要么放在聚合函数中,要么放在group by语句后面,否则将提示错误。 2、 统计“课程表”中总的课程数,总学分,最高学分,最低学分,平均学分(加列名,三 种方法 ) select COUNT(*)as 总课程数,SUM(学分)as
3、总学分,MAX(学分)as 最高学分,MIN(学分)as最低学分 from 课程表 3. 查询“课程表”中学分最高的前三条记录。(降序 desc) select top 3 * from 课程表 order by 学分 desc 4. 查询“课程表”中学分最低的前三条记录中的课程名称和学分。(升序 asc 默认) select top 3 课程名称,学分 from 课程表 order by 学分 desc 5. “选课成绩表”中,查询结果按照学生编号分类,统计出每个学生的成绩总成绩和平均成绩。(加列名) select 学生编号 as 学生编号,SUM(成绩) as 总成绩,AVG(成绩)as
4、平价成绩 from 选课成绩表 group by 学生编号 6. “选课成绩表”中,查询结果按照课程编号分类,统计出每门课程的成绩总成绩和平均成绩。(加列名) select 课程编号 as 课程编号,SUM(成绩) as 总成绩,AVG(成绩)as 平价成绩 from 选课成绩表 group by 课程编号 7. “选课成绩表”中,查询结果按照学生编号分类,统计出总成绩大于250分的学生的成绩总成绩和平均成绩。(加列名) select 学生编号 as 学生编号,SUM(成绩) as 总成绩,AVG(成绩)as 平价成绩 from 选课成绩表 group by 学生编号 having SUM(成
5、绩)250 综合练习: 1.统计”学生表”中各个班学生的总人数。 select COUNT(*),班级 from 学生表 group by 班级 2、统计”教师表”中,各类职称的总人数。 select 职称,COUNT(*)as 总人数 from 教师表 group by 职称 3、统计 “选课成绩表”中每个学生的总分和平均分 ,并按总分从高到低排序 select SUM(成绩) as 总成绩,平均分=avg(成绩),学生编号 as 学生编号 from 选课成绩表 group by 学生编号 order by SUM(成绩) 4、统计 选课成绩表 中每门课程的平均分 ,只输出平均分大于80分的
6、“课程编号”、“平均分”,并将结果按平均分从高到低排列。 select SUM(成绩) as 总成绩,平均分=avg(成绩),课程编号 as 课程编号 from 选课成绩表 group by 课程编号 having avg(成绩)80 order by 平均分 desc 5、在“选课成绩表“中查询课程编号为101的成绩信息,只输出学生编号,成绩。 select 成绩,学生编号 from 选课成绩表 where 课程编号=101 6、计算“选课成绩表“中 学生编号为980104的学生的总成绩和平均成绩 。 select SUM(成绩) as 总成绩,平均分=avg(成绩),学生编号 as 学生编
7、号 from 选课成绩表 group by 学生编号 having 学生编号=980104 7、统计“学生表“中每个班男生和女生各有多少人。 use jxgl go select count(性别)人数,班级 from 学生表 group by 班级 8、查询“学生表“中网工001班学生的学号、姓名、班级、年龄,并按照年龄进行降序排列,如果年龄相同的则按学号进行升序排列。 use jxgl go select 学号,姓名,班级,年龄 from 学生表 where 班级=网工 order by 年龄 desc,学号 补充 1. 统计”学生表”中男生人数。 use jxgl go select c
8、ount(性别) from 学生表 where 性别=男 2. 统计”学生表”中姓王的人数。 use jxgl go select count(姓名) from 学生表 where 姓名 like 王% 3. 统计”学生表”中入学成绩大于400的人数。 use jxgl go select count(入学成绩) from 学生表 where 入学成绩400 4. 统计”学生表”中网工001班的人数。 use jxgl go select count(入学成绩) from 学生表 where 班级=网工 5. 统计”学生表”中每个班的人数。 use jxgl go select count(性
9、别)人数,班级 from 学生表 group by 班级 6. 统计”学生表”中男女人数各多少。 use jxgl go select count(性别),性别 from 学生表 group by 性别 7 找出“学生表”中成绩最高是多少。 select MAX(入学成绩) from 学生表 8 找出“学生表”中成绩最低是多少。 select MIN(入学成绩) from 学生表 9. 统计 “学生表”中学生总成绩。 select SUM(入学成绩) from 学生表 10. 统计 “学生表”中学生平均成绩。 select AVG(入学成绩) from 学生表 11 统计 “学生表”中男学生总
10、成绩。 select Sum(入学成绩) from 学生表 where 性别=男 12 统计 “学生表”中女生的平均分。 select AVG(入学成绩) from 学生表 where 性别=女 13 计”选课成绩表”中选修101课程的人数。 use jxgl go select count(学生编号) from 选课成绩表 where 课程编号=101 14.选出”选课成绩表”中成绩为100分的学生编号和课程编号; select 学生编号,课程编号 from 选课成绩表 where 成绩=100 15选出”选课成绩表”中成绩不及格的学生人数; select count(*) from 选课成绩表 where 成绩 5 / 5