问题描述
这段代码只是给了我 1 作为我所有学生的位置。我希望学生根据他们的总数来确定他们的位置。如果他们总共是平局,它也应该能够处理。任何帮助将不胜感激 下面是我的代码
$getStudPosition=MysqLi_query($conn,"SELECT sum(sr.total) AS gtot FROM student_result sr WHERE sr.studentId='$id' ORDER BY resId DESC");
while ($r=MysqLi_fetch_array($getStudPosition))
{
$students = array($gTotal=$r['gtot']);// convert to array
$pos = $real_pos = 0;
$prev_score = -1;
foreach ($students as $exam_n => $score)
{
$real_pos += 1;
$pos = ($prev_score != $score) ? $real_pos: $pos;
$prev_score = $score;
}
$average = $score/$totSubject; //getting students average
}
我正在运行 10.4.18 版本的 MariaDB。
解决方法
看起来您正在尝试在循环内一次一个地获取学生的位置?一次获得所有这些人的位置会更有效率。为此,您只需使用 https://mariadb.com/kb/en/rank/。如果没有我们要求的信息,很难给出更详细的答案。