MySQL, как ранжировать оценки / позиции предметных оценок одного студента - PullRequest
0 голосов
/ 29 августа 2018

Итак, у меня есть таблица MARKS, у меня есть эти столбцы

STUDENT_ID, CLASSFORM_NAME, ACADEMIC_YEAR, TERM,  SUBJECT_NAME, TOTAL_MARKS

поэтому я хочу выбрать оценку общего количества баллов на основе имени_участника, имени_класса, термина и академического года для одного конкретного учащегося

Это запрос, который я использовал, но не работал

SELECT *
FROM (SELECT total_marks, @curRank := @curRank + 1 AS scorePosition
      FROM marks m, (SELECT @curRank := 0) q
      WHERE classform_name=? AND term=? AND academic_year=? AND subject_name=?
     ) t
WHERE student_id =?
ORDER BY total_marks DESC

Помоги мне. Спасибо.

1 Ответ

0 голосов
/ 29 августа 2018

Вам необходимо отсортировать данные до того, как вы назначите рейтинг. Чтобы быть в безопасности, используйте подзапрос:

SELECT m.*
FROM (SELECT m.*, @curRank := @curRank + 1 AS scorePosition
      FROM (SELECT m.*
            FROM marks m
            WHERE classform_name = ? AND term = ? AND academic_year = ? AND subject_name = ?
            ORDER BY total_marks DESC
           ) m CROSS JOIN
           (SELECT @curRank := 0) q
     ) m
WHERE m.student_id = ?;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...