SQL查询,每门课大于65的学生姓名
时间: 2024-01-17 20:04:19 浏览: 65
假设有两个表,一个是学生表(students),包含学生的ID和姓名;另一个是成绩表(grades),包含学生的ID、课程名和成绩。
以下是查询语句:
```
SELECT students.name
FROM students
INNER JOIN grades ON students.id = grades.student_id
WHERE grades.score > 65
GROUP BY students.name;
```
此查询语句使用INNER JOIN将学生表和成绩表关联,并使用WHERE子句筛选成绩大于65的记录。最后,使用GROUP BY子句对姓名进行分组,以避免出现重复姓名。
相关问题
sql查询,每门课大于65的学生姓名
假设有两个表,一个是学生表(students),包含学生的ID和姓名;另一个是成绩表(grades),包含学生的ID、课程名和成绩。
以下是查询语句:
```
SELECT students.name
FROM students
INNER JOIN grades ON students.id = grades.student_id
WHERE grades.score > 65
GROUP BY students.name;
```
此查询语句使用INNER JOIN将学生表和成绩表关联,并使用WHERE子句筛选成绩大于65的记录。最后,使用GROUP BY子句对姓名进行分组,以避免出现重复姓名。
只有一张成绩表(SQL)查询A、每门课都大于65分的学生姓名 B、平均分最高的学生姓名C、单科成绩最高的学生姓名
好的,既然只有一张成绩表,我们需要使用 GROUP BY 和 HAVING 子句来实现每门课都大于65分的学生姓名的查询。
A、查询每门课都大于65分的学生姓名,可以使用以下 SQL 语句:
```
SELECT s.name
FROM score sc
JOIN student s ON sc.sid = s.sid
GROUP BY sc.sid
HAVING MIN(sc.score) > 65
```
B、查询平均分最高的学生姓名,可以使用以下 SQL 语句:
```
SELECT s.name
FROM score sc
JOIN student s ON sc.sid = s.sid
GROUP BY sc.sid
ORDER BY AVG(sc.score) DESC
LIMIT 1
```
C、查询单科成绩最高的学生姓名,可以使用以下 SQL 语句:
```
SELECT s.name
FROM score sc
JOIN student s ON sc.sid = s.sid
WHERE sc.score = (
SELECT MAX(score)
FROM score
WHERE cid = sc.cid
)
```
注意,这种方式只会返回一个学生,如果有多个学生在某门课的成绩相同且最高,那么只返回一个学生姓名。
阅读全文