在我的项目中,这对我来说是个头疼的挑战,是一个php或者说是sql新手。 我必须首先表明我在带有绑定参数的php中运行此代码,因为我正在使用pdo。
现在,正如标题所示,在从聚合和派生表(来自子句)计算原始分数,而不在sql中使用@variables后,如何在课堂上对学生进行排名。比如,假设我从数据库中提取的数据是:
studref Name English Maths Gov
Bd1 Ida 66 78 49
Bd2 Iyan 58 80 69
Bd3 Ivan 44 56 80
Bd4 Iven 63 92 68
Bd5 Ike 69 77 59
所以在派生表中使用Aggregate Sum,然后我添加另一列,它是来自各个主题的标记的总和,如:
SUM(THE SCORES) AS accum_raw_scores
studref Name English Maths Gov accum_raw_scores
Bd1 Ida 66 78 49 193
Bd2 Iyan 58 80 69 207
Bd3 Ivan 44 56 80 180
Bd4 Iven 63 92 68 223
Bd5 Ike 69 77 59 205
所以,我接下来要做的是根据他/她来自受试者的总分数添加另一列,该列将代表每个学生的等级。因此,这是我希望下面的代码为我处理的地方:
1+(SELECT COUNT(*)
FROM (SELECT s.studref, SUM(s.subjectscore) AS total_score
FROM studentsreports s
GROUP BY s.studref) AS sub
WHERE sub.total_score > main.accum_raw_scores) AS overall_position,
所以最后,我会有类似的东西:
studref Name English Maths Gov accum_raw_scores rank
Bd1 Ida 66 78 49 193 4
Bd2 Iyan 58 80 69 207 2
Bd3 Ivan 44 56 80 180 5
Bd4 Iven 63 92 68 223 1
Bd5 Ike 69 77 59 205 3
不幸的是,我尝试了几种方法但没有成功。请帮忙! 同时,我想尽可能多地尝试没有变量。