MySQL查询分组计算:获取每门课程平均成绩、最高成绩和最低成绩
MySQL查询实例:计算每门课程的平均成绩、最高成绩和最低成绩
假设我们有以下数据库表结构和数据:
1. course 表:存储课程信息
| 列名 | 说明 ||---|---|| Cno | 课程编号 (主键) || Cname | 课程名称 || Chours | 课时 || Credit | 学分 || tno | 教师编号 |
2. sc 表:存储学生选课及成绩信息
| 列名 | 说明 ||---|---|| Sno | 学号 (主键) || Cno | 课程编号 (外键) || Score | 成绩 |
3. student 表:存储学生信息
| 列名 | 说明 ||---|---|| Sno | 学号 (主键) || Sname | 姓名 || Ssex | 性别 || Sage | 年龄 || Sclass | 班级 || Scol | 院系 |
4. teacher 表:存储教师信息
| 列名 | 说明 ||---|---|| tno | 教师编号 (主键) || tname | 姓名 || tsex | 性别 || trank | 职称 || tempdate | 入职日期 |
目标: 查询sc表中每类Cno的平均Score、最高Score和最低Score,显示Cno、Cname、平均Score、最高Score和最低Score。
**SQL语句实现:**sqlSELECT sc.Cno, course.Cname, AVG(sc.Score) AS avg_score, MAX(sc.Score) AS max_score, MIN(sc.Score) AS min_scoreFROM scINNER JOIN course ON sc.Cno = course.CnoGROUP BY sc.Cno, course.Cname;
代码解析:
INNER JOIN: 将sc表和course表通过共同的Cno列连接起来。2.AVG(sc.Score): 计算每个课程的平均成绩。3.MAX(sc.Score): 计算每个课程的最高成绩。4.MIN(sc.Score): 计算每个课程的最低成绩。5.GROUP BY sc.Cno, course.Cname: 按照课程编号和课程名称分组。
通过以上SQL语句,我们可以方便地查询每门课程的平均成绩、最高成绩和最低成绩。
原文地址: https://www.cveoy.top/t/topic/fVcL 著作权归作者所有。请勿转载和采集!