sql 每个老师带的每门课程的平均分
时间: 2024-04-12 10:27:31 浏览: 28
你可以使用 SQL 的 GROUP BY 和 AVG 函数来计算每个老师带的每门课程的平均分。假设你有一个名为 "scores" 的表,其中包含了学生的成绩信息,包括学生姓名、课程名称、老师姓名和分数。你可以按照老师和课程分组,然后计算平均分。以下是一个示例 SQL 查询语句:
```sql
SELECT teacher_name, course_name, AVG(score) AS average_score
FROM scores
GROUP BY teacher_name, course_name;
```
这将返回每个老师带的每门课程的平均分数。你可以根据你的实际数据表和字段名称进行相应的调整。
相关问题
MySQL4、创建存储过程P4,通过输入的教师姓名能够返回该老师的所教班级和每个班这门课的平均成绩
好的,以下是创建存储过程 P4 的 SQL 代码:
```
DELIMITER //
CREATE PROCEDURE P4(IN teacher_name VARCHAR(50))
BEGIN
SELECT class_name, AVG(score) AS avg_score
FROM teacher_course
WHERE teacher_name = teacher_name
GROUP BY class_name;
END //
DELIMITER ;
```
请注意,这里的假设表名为 "teacher_course",包含以下字段:
- teacher_name:教师姓名
- class_name:班级名称
- score:成绩
在执行该存储过程时,需要将教师姓名作为参数传入。例如,如果要查询 "张三" 教师的授课情况,可以执行以下代码:
```
CALL P4('张三');
```
该存储过程将返回 "张三" 教师所教班级的平均成绩。
使用SQL做下列题目要(1)查询所有女生的平均年龄。 (2)查询卢老师所授课程的选课学生姓名。 (3)查询卢老师所授课程中,选课人数超过10人的课程信息。 (4)查询卢老师所授课程中,平均分大于85分的课程号,课程名称和平均分数。 (5)查询每个同学的平均分数,以平均分数降序排列。 (6)查询男生平均分超过85的学生姓名。 (7)查询与“张三”同性别的同学姓名(不含张三)。 (8)查询同时选修了操作系统和数据库原理的学生姓名和学号。 (9)查询有两门课程是90分以上的同学姓名和学号。 (10)查询最少选修了两门课程,且所有课程均为90分以上的学生姓名和学号。
1. 查询所有女生的平均年龄。
```
SELECT AVG(age) FROM students WHERE gender='女';
```
2. 查询卢老师所授课程的选课学生姓名。
```
SELECT s.name FROM students s JOIN course_selection cs ON s.id=cs.student_id JOIN courses c ON cs.course_id=c.id WHERE c.teacher='卢老师';
```
3. 查询卢老师所授课程中,选课人数超过10人的课程信息。
```
SELECT c.id, c.name, COUNT(cs.student_id) AS student_count FROM courses c JOIN course_selection cs ON c.id=cs.course_id WHERE c.teacher='卢老师' GROUP BY c.id, c.name HAVING student_count>10;
```
4. 查询卢老师所授课程中,平均分大于85分的课程号,课程名称和平均分数。
```
SELECT c.id, c.name, AVG(sc.score) AS avg_score FROM courses c JOIN course_selection cs ON c.id=cs.course_id JOIN score sc ON cs.student_id=sc.student_id AND cs.course_id=sc.course_id WHERE c.teacher='卢老师' GROUP BY c.id, c.name HAVING avg_score>85;
```
5. 查询每个同学的平均分数,以平均分数降序排列。
```
SELECT s.id, s.name, AVG(sc.score) AS avg_score FROM students s JOIN score sc ON s.id=sc.student_id GROUP BY s.id, s.name ORDER BY avg_score DESC;
```
6. 查询男生平均分超过85的学生姓名。
```
SELECT s.name FROM students s JOIN score sc ON s.id=sc.student_id WHERE s.gender='男' GROUP BY s.id, s.name HAVING AVG(sc.score)>85;
```
7. 查询与“张三”同性别的同学姓名(不含张三)。
```
SELECT name FROM students WHERE gender=(SELECT gender FROM students WHERE name='张三') AND name<>'张三';
```
8. 查询同时选修了操作系统和数据库原理的学生姓名和学号。
```
SELECT s.id, s.name FROM students s JOIN course_selection cs ON s.id=cs.student_id JOIN courses c ON cs.course_id=c.id WHERE c.name='操作系统' AND s.id IN (SELECT student_id FROM course_selection WHERE course_id=(SELECT id FROM courses WHERE name='数据库原理'));
```
9. 查询有两门课程是90分以上的同学姓名和学号。
```
SELECT s.id, s.name FROM students s JOIN score sc ON s.id=sc.student_id WHERE sc.score>=90 GROUP BY s.id, s.name HAVING COUNT(DISTINCT sc.course_id)>=2;
```
10. 查询最少选修了两门课程,且所有课程均为90分以上的学生姓名和学号。
```
SELECT s.id, s.name FROM students s JOIN score sc ON s.id=sc.student_id WHERE sc.score>=90 GROUP BY s.id, s.name HAVING COUNT(DISTINCT sc.course_id)>=2 AND COUNT(CASE WHEN sc.score<90 THEN 1 END)=0;
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)