用mysql的exists查询各门课分数都高于课程平均分的学生信息。
时间: 2023-06-08 14:03:41 浏览: 62
好的,我可以回答这个问题。以下是该查询语句:
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);
其中,'课程名称'需要替换为查询的具体课程名称。这条语句将返回所有各门课分数都高于课程平均分的学生信息。
相关问题
使用exists查询平均分大于85课程名mysql语句
假设你的学生成绩表名为`scores`,包含以下字段:`student_id`(学号)、`course_name`(课程名)、`score`(分数)。
使用`EXISTS`查询平均分大于85的课程名的MySQL语句如下:
```
SELECT DISTINCT course_name FROM scores s1
WHERE EXISTS (
SELECT * FROM scores s2
WHERE s2.course_name = s1.course_name
GROUP BY s2.course_name
HAVING AVG(s2.score) > 85
);
```
首先我们在`s1`中查询所有的课程名,然后通过`EXISTS`子查询判断该课程名对应的记录中是否存在平均分大于85的记录(使用`HAVING`子句进行平均分的筛选),如果存在,就将该课程名返回(使用`DISTINCT`去重)。
用sql语句查询每门课都大于80的学生信息
假设有3个表: 学生表(student)、课程表(course)、选课表(select_course),其中选课表中记录了学生选修了哪些课程以及对应的成绩。
可以使用以下 SQL 语句查询每门课都大于80的学生信息:
```
SELECT s.*
FROM student s
WHERE NOT EXISTS (
SELECT *
FROM course c
WHERE NOT EXISTS (
SELECT *
FROM select_course sc
WHERE sc.sid = s.id AND sc.cid = c.id AND sc.score >= 80
)
);
```
这个查询语句的意思是:查询所有学生的信息,但是只保留选修了全部课程且成绩都大于等于80分的学生。