请写SQL,查询每个学生所有人课程的平均分
时间: 2024-01-22 10:18:28 浏览: 75
假设有三个表:学生表(students),课程表(courses)和成绩表(scores),其中成绩表包含学生ID、课程ID和得分。
可以使用以下 SQL 查询语句来获取每个学生所有课程的平均分:
```
SELECT students.name, AVG(scores.score) as avg_score
FROM students
JOIN scores ON students.id = scores.student_id
GROUP BY students.id;
```
该查询使用了 JOIN 子句将学生表和成绩表连接起来。然后使用 GROUP BY 子句按照学生ID分组,以便计算每个学生的平均分。最后,使用 AVG 函数计算每个学生所有课程的平均分,并将结果命名为 avg_score。
相关问题
使用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;
```
用sql做下列题目(1)查询所有女生的平均年龄。 (2)查询刘老师所授课程的选课学生姓名。 (3)查询张老师所授课程中,选课人数超过10人的课程信息。 (4)查询卢老师所授课程中,选课人数最多的课程的课程号,课程名称和选课人数。 (5)查询每个同学的平均分数,以平均分数降序排列,显示前5名。 (6)查询姓“张”的同学平均成绩前三的学生学号和姓名及平均分; (7) 查询女生平均分超过85分的学生人数。 (8)查询男生平均分超过85的学生姓名。 (9)查询与“张三丰”在一个系的同学姓名。 (10)查询所有老师中,上课门数最多的老师姓名和职称。
很高兴为您回答这个问题,以下是每个问题对应的SQL查询语句:
(1)
```
SELECT AVG(age) FROM students WHERE gender='女';
```
(2)
```
SELECT students.name FROM students,courses,teachers WHERE students.id=courses.sid AND courses.tid=teachers.id AND teachers.name='刘老师';
```
(3)
```
SELECT courses.cid,courses.name,COUNT(courses.sid) as count FROM courses,teachers WHERE courses.tid=teachers.id AND teachers.name='张老师' GROUP BY courses.cid,courses.name HAVING COUNT(courses.sid)>10;
```
(4)
```
SELECT courses.cid,courses.name,COUNT(courses.sid) as count FROM courses,teachers WHERE courses.tid=teachers.id AND teachers.name='卢老师' GROUP BY courses.cid,courses.name ORDER BY count DESC LIMIT 1;
```
(5)
```
SELECT students.id,students.name,AVG(score) as avg_score FROM students,scores WHERE students.id=scores.sid GROUP BY students.id ORDER BY avg_score DESC LIMIT 5;
```
(6)
```
SELECT students.id,students.name,AVG(score) as avg_score FROM students,scores WHERE students.id=scores.sid AND students.name LIKE '张%' GROUP BY students.id ORDER BY avg_score DESC LIMIT 3;
```
(7)
```
SELECT COUNT(DISTINCT students.id) FROM students,scores WHERE students.id=scores.sid AND students.gender='女' GROUP BY students.id HAVING AVG(score)>85;
```
(8)
```
SELECT students.name FROM students,scores WHERE students.id=scores.sid AND students.gender='男' GROUP BY students.id HAVING AVG(score)>85;
```
(9)
```
SELECT students.name FROM students WHERE students.department=(SELECT department FROM students WHERE students.name='张三丰');
```
(10)
```
SELECT teachers.name,teachers.title,COUNT(courses.tid) as course_num FROM teachers,courses WHERE teachers.id=courses.tid GROUP BY teachers.id ORDER BY course_num DESC LIMIT 1;
```
请注意,这些SQL查询语句是根据假设的数据库表结构编写的,如果您的表结构不同,这些查询语句可能需要进行适当的修改。
阅读全文