3、(SQL)查询A、每门课都大于65分的学生姓名B、平均分最高的学生姓名C、单科成绩最 高的学生姓名(注意表的数据此处只是显示很少一部分,并非全部)
时间: 2024-01-24 13:05:07 浏览: 64
学科、姓名、分数。 分别计算每门学科分数最高的前三名,并显示名次。写入MySQL中。
A、查询每门课都大于65分的学生姓名,可以使用子查询和聚合函数来实现:
```sql
SELECT s.name
FROM students s
WHERE NOT EXISTS (
SELECT *
FROM courses c
WHERE c.id NOT IN (
SELECT course_id
FROM scores
WHERE student_id = s.id AND score > 65
)
);
```
该查询语句首先查询学生表 `students` 中的所有学生姓名,然后使用 NOT EXISTS 子查询来筛选出每个学生的所有成绩都大于 65 分的学生。
B、查询平均分最高的学生姓名,可以使用子查询和聚合函数来实现:
```sql
SELECT s.name
FROM students s
WHERE s.id = (
SELECT student_id
FROM scores
GROUP BY student_id
ORDER BY AVG(score) DESC
LIMIT 1
);
```
该查询语句首先查询成绩表 `scores` 中的所有学生的平均分,然后使用子查询和 LIMIT 关键字来找到平均分最高的学生的 ID,最后再通过子查询查询该学生的姓名。
C、查询单科成绩最高的学生姓名,可以使用子查询和聚合函数来实现:
```sql
SELECT s.name
FROM students s
WHERE s.id = (
SELECT student_id
FROM scores
WHERE course_id = 1
ORDER BY score DESC
LIMIT 1
);
```
该查询语句首先查询成绩表 `scores` 中课程编号为 1 的所有成绩,然后使用子查询和 LIMIT 关键字来找到该课程成绩最高的学生的 ID,最后再通过子查询查询该学生的姓名。
阅读全文