这是我的问题:
如果学生在任何科目中获得 49 分及以下的分数,他将不会被列入排名。
各科49分以上的学生按平均分排名
如果学生的平均成绩相同,他们的排名应该是平等的。
这是我的示例:
Table1
Student_ID Name Math English Science Average
1 Apple 64 49 70 61.00
2 Boy 80 79 65 74.67
3 Cat 51 78 66 65.00
4 Dove 50 76 64 63.33
5 Eden 81 88 72 80.33
6 Fox 80 79 65 74.67
7 Golf 32 88 69 63.00
Output
Student_ID Name Math English Science Average RANK
1 Apple 64 49 70 61.00
2 Boy 80 79 65 74.67 2
3 Cat 51 78 66 65.00 3
4 Dove 50 76 64 63.33 4
5 Eden 81 88 72 80.33 1
6 Fox 80 79 65 74.67 2
7 Golf 32 88 69 63.00
这是我的查询:
SELECT
tmain.Student_ID,
tmain.Name,
tmain.Math,
tmain.English,
tmain.Science,
tmain.Average,
IIf(sub.RANK=0, Null, sub.RANK) AS RANK
FROM
Table1 AS tmain
LEFT JOIN
(
SELECT
t1.Student_ID,
t1.Average,
(
SELECT Count(*)
FROM Table1 AS t2
WHERE
t2.Math>49
AND t2.English>49
AND t2.Science>49
AND t2.Average>=t1.Average
) AS RANK
FROM Table1 AS t1
WHERE
t1.Math>49
AND t1.English>49
AND t1.Science>49
) AS sub
ON tmain.Student_ID = sub.Student_ID;
基于查询的输出:
Output
Student_ID Name Math English Science Average RANK
1 Apple 64 49 70 61.00
2 Boy 80 79 65 74.67 3
3 Cat 51 78 66 65.00 4
4 Dove 50 76 64 63.33 5
5 Eden 81 88 72 80.33 1
6 Fox 80 79 65 74.67 3
7 Golf 32 88 69 63.00
有人可以帮我解决这个问题吗,输出跳过了第二名
注意:Rank
值不存储在表中。