次のような結果テーブルがあります。
ID STUDENT_ID Branch_id Class_id Exam_id Subject_id 数字 日付 1 653 5 1 1 8 60 2012-01-01 2 653 5 1 1 9 40 2012-01-01 3 653 5 1 1 10 80 2012-01-01 4 653 5 1 1 11 50 2012-01-01 5 653 5 1 1 12 65 2012-01-01 6 653 5 1 1 13 33 2012-01-01 7 653 5 1 1 15 86 2012-01-01 8 222 5 1 1 8 100 2012-01-01 9 222 5 1 1 9 80 2012-01-01 10 222 5 1 1 10 92 2012-01-01 11 222 5 1 1 11 50 2012-01-01 12 222 5 1 1 12 65 2012-01-01 13 222 5 1 1 13 33 2012-01-01 7 222 5 1 1 15 86 2012-01-01
私の欲望の結果は次のようになります。
Student_ID 数学 英語 理科 総合順位 1 90 89 88 267 1 2 90 89 88 267 1 3 58 45 98 201 2
この方法で学生ランクを取得したい:
SET @rank = 0, @prev_val = NULL;
SELECT rank, correct FROM
(
SELECT
@rank := IF(@prev_val=correct,@rank,@rank+1) AS rank,
@prev_val := correct AS correct, uid
FROM quiz_user
ORDER BY correct DESC
)as result WHERE uid=xxxxxxxxxxxx
このクエリでは、投稿の作成者が正しい列にランクを割り当て、すべての数値を合計した後に数値 SUM(numbers) 列にランクを割り当てる必要があるテーブル構造の違いのみが必要です。
助けてください。