【发布时间】:2021-06-24 03:44:34
【问题描述】:
这段代码只是给我 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。
【问题讨论】:
-
你从哪里得到学生姓名、总分、平均分和位置?此数据是否需要来自同一查询。请使用创建脚本和插入脚本的示例数据共享您的表结构。另外,请告诉我您使用的是哪个版本的 mysql。
-
some ideas 如果您有足够的 mysql-8.0 或 mariadb-10.2+ 版本,则显示窗口函数是一种简单的方法。
-
学生姓名,总分是从数据库中获取的,平均是每个学生的总和/(总科目),也是从数据库中获取的。这个职位是我试图根据总计获得的。我正在运行 10.4.18 版本的 MariaDB
-
您或许可以使用 ORDER BY。我不认为有一个函数可以做到这一点。
-
你使用
WHERE sr.studentId='$id'选择一个学生——当然这个位置是1。