我有一个mysql表"course_marks“,其中包含studentID、courseID、mark三个字段。我想得到一个特定的studentID的等级,为一个特定的courseID的基础上的标记(按符号顺序)。查询应该返回一个表示级别的行。忽略相同的标记条件。如何在一个mysql查询中获得结果?
发布于 2015-08-06 06:19:32
首先,在计算排名时,您应该决定如何处理相同的分数。这个分数查询: 5,5,4将计算分数为4为3的学生的排名:
SELECT
COUNT(r.mark)+1 as rank
FROM
course_marks cm
LEFT JOIN
course_marks r ON r.courseID = cm.courseID AND r.mark > cm.mark
WHERE
cm.studentID = %STUDENT_ID% AND
cm.courseID = %COURSE_ID% 这个分数查询: 5,5,4将计算分数为4的学生的排名为2:
SELECT
COUNT(DISTINCT r.mark)+1 as rank
FROM
course_marks cm
LEFT JOIN
course_marks r ON r.courseID = cm.courseID AND r.mark > cm.mark
WHERE
cm.studentID = %STUDENT_ID% AND
cm.courseID = %COURSE_ID% https://stackoverflow.com/questions/31847878
复制相似问题