php - 根据总分获取单个学生的排名(位置)
问题描述
我想根据所有科目的总分显示单个学生的“排名”或“位置”。
例如,如果一个学生的总分最高为 99,它应该返回排名第一。另一个 92 的学生应该返回第二名。如果两个学生的分数相同为 90,他们应该返回第三名。
我不希望他们在一张桌子上,只是一个显示器。
这是我的查询模型:
public function GetClassPosition($student_id, $session_id, $section_id, $class_id)
{
$this->db->order_by('tot_score', 'DESC');
$this->db->select_sum('tot_score');
$this->db->where('student_id', $subject_id);
$this->db->where('session_id', $session_id);
$this->db->where('section_id', $section_id);
$this->db->where('class_id', $class_id);
$data = $this->db->get('scores_primary');
}
控制器:
public function GetClassPosition($student_id, $session_id, $section_id, $class_id)
{
$data = $this->primary_model->GetClassPosition($student_id, $session_id, $section_id, $class_id);
return $data->tot_score;
}
序数:
function mtordinal($number)
{
$ends = array('TH','ST','ND','RD','TH','TH','TH','TH','TH','TH');
if ((($number % 100) >= 11) && (($number%100) <= 13))
return $number. 'th';
else
return $number. $ends[$number % 10];
}
显示它
看法:
<?php
$scores2 = $CI->GetClassPosition($value->$student_id, $value->session_id, $value->section_id, $value->class_id);
$scores = array_column($scores2, 'tot_score');
$pos = array_search($value->tot_score, $scores);
$number = $pos + 1;
echo $CI->ordinal($number);
?>
显然,这会以列表形式显示结果。如何仅显示每个学生的职位?
解决方案
推荐阅读
- sql - 将每 2 个连续记录合并为 1 个
- python - 根据字典排序列表(初学者)
- jquery - jQuery,阻止表单提交,然后继续
- javascript - React Autosuggest 在点击建议时抛出错误
- c++ - 有什么方法可以在 c++ 标头 Flie 中使用构造函数中的参数
- django - 使用相关模型开发查询集
- ruby-on-rails - 由于“ActiveModel::MissingAttributeError”,两个表的“连接”不起作用
- python-3.x - 大量的 Cog 错误
- r - R:将数据帧的结构转换为另一个数据帧的相同结构
- python - powershell 命令不会从 python 脚本中正常运行