用子查询计算机系学生们各门课程的平均分
时间: 2024-03-16 22:41:21 浏览: 22
好的,以下是用子查询计算机系学生各门课程平均分的 SQL 查询语句:
```
SELECT course_name, AVG(score) AS avg_score
FROM (
SELECT s.*, c.course_name
FROM scores s
INNER JOIN courses c ON s.course_id = c.course_id
INNER JOIN students stu ON s.student_id = stu.student_id
WHERE stu.major = '计算机系'
) sub
GROUP BY course_name;
```
以上假设有三个表:`students`存储学生信息,包括学生ID和专业;`courses`存储课程信息,包括课程ID和课程名称;`scores`存储学生选课成绩,包括学生ID、课程ID和分数。
相关问题
用mysql的exists查询各门课分数都高于课程平均分的学生信息。
好的,我可以回答这个问题。以下是该查询语句:
SELECT student_id, COUNT(score) AS num_courses
FROM scores
WHERE score > (SELECT AVG(score) FROM scores WHERE course = '课程名称')
GROUP BY student_id
HAVING num_courses = (SELECT COUNT(DISTINCT course) FROM scores);
其中,'课程名称'需要替换为查询的具体课程名称。这条语句将返回所有各门课分数都高于课程平均分的学生信息。
用子查询查询计算机系成绩最高的学生姓名
好的,以下是查询计算机系成绩最高的学生姓名的 SQL 语句:
```
SELECT name
FROM students
WHERE department = '计算机系'
ORDER BY score DESC
LIMIT 1;
```
这个查询使用了子查询,首先从 `students` 表中选出 `department` 字段为 `'计算机系'` 的所有学生,然后按照成绩从高到低排序,最后选出第一行(也就是成绩最高的学生),并返回该学生的姓名。