查询每门课程的最高分
要查询每门课程的最高分,可以使用SQL中的GROUP BY子句结合MAX()聚合函数,以下是几种常见的实现方式:
基本SQL查询
SELECT
course_id,
course_name,
MAX(score) AS highest_score
FROM
courses
GROUP BY
course_id, course_name;
如果课程信息和学生成绩在不同表中
假设课程信息在courses表中,成绩在scores表中:

SELECT
c.course_id,
c.course_name,
MAX(s.score) AS highest_score
FROM
courses c
JOIN
scores s ON c.course_id = s.course_id
GROUP BY
c.course_id, c.course_name;
按课程名称分组(如果课程ID和名称不是一一对应)
SELECT
course_name,
MAX(score) AS highest_score
FROM
scores
GROUP BY
course_name;
包含学生信息(显示获得最高分的学生)
SELECT
c.course_id,
c.course_name,
s.student_id,
s.student_name,
sc.score AS highest_score
FROM
courses c
JOIN
scores sc ON c.course_id = sc.course_id
JOIN
students s ON sc.student_id = s.student_id
WHERE
sc.score = (SELECT MAX(score) FROM scores WHERE course_id = c.course_id)
GROUP BY
c.course_id, c.course_name, s.student_id, s.student_name, sc.score;
注意事项
- 确保在
GROUP BY子句中包含所有非聚合列 - 如果有多名学生获得相同最高分,最后一条查询会返回所有这些学生
- 根据实际数据库结构调整表名和字段名
查询可以根据您的具体数据库结构进行调整。

版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。