我正在构建报告卡应用程序。我对学生报告表的看法是这样的:
my view
主题CA 1 CA 2 CA平均考试总百分比主题位置
数学80 70 75.0000 56 65.50000000 1st
英语70 45 57.5000 100 78.75000000第三名
生物学89 23 56.0000 90 73.00000000第四位
在数据库的结果表中,我有列:student_id,studentClass,CA1,CA2,考试和其他要点。我没有总百分比,“ CA平均值”或“总体百分比”列也没有。总百分比由总百分比/主题数得出(在上面的示例中:72.416666666667)。您可以在下面的控制器中找到查询生成器,从而动态计算CA平均百分比和总百分比。
我需要计算 1.职位等级,例如初级1A。根据总体百分比为每个学生分配一个职位。例如第一,第二,第三等。当然,如果有平局,则下一个位置将被跳过。 2.跨部门的职位,例如,Elementary可以拥有1A,1B,1C等基础教育。与所有Elementary(1A,1B,1C等)中的所有学生相比,我需要按总体百分比为学生分配职位。 3.学科排名:该分数是根据每个学科的学生与其他班级相同的学生(例如,小学1A)相比较得出的总百分比来计算的。这是我上面视图中的最后一列。我也可以找到解决方法。
我正在寻找解决方案。到目前为止,我所看到的是使用DB表上的一列来计算Position(rank)的解决方案。在我的情况下,我没有此类列,因为我使用了QB进行实时计算。我确实尝试通过至少在插入过程中计算CA平均数和总百分比来实现该方法,但是出现“不支持的操作数”错误。
我的控制器:
公共职能Studentresultsheet(请求$ request){
$stclass = $request->get('stclass');
$myclass = Stclass::find($request->get('stclass'))->name;
$studentId = $request->get('studentId');
$studentname = Student::find($request->get('studentId'))->surname;
$session= $request->get('sessionnow');
$term = $request->get('term');
$myids = Stclass::find($stclass)->students;
// $dodo = DB::table('results')
// -> where('studentClass', $stclass)->where('session', $session)->where('term', $term)
// ->selectRaw('results.studentId')->distinct()->get();
$resultpercent = DB::table('results')
-> where('studentClass', $stclass)->where('session', $session)->where('term', $term)->where('studentId', $studentId)
->selectRaw("SUM((results.exam + (results.test1 + results.test2)/2)/2)/(COUNT(results.subject)) as overallpercent")->get();
$dodo = DB::table('results')
-> where('studentClass', $stclass)->where('session', $session)->where('term', $term)
->selectRaw('results.studentId')->get();
$results = DB::table('results')
->where('studentClass', $stclass)->where('session', $session)->where('term', $term)->where('studentId', $studentId)
->selectRaw('results.*, (results.test1 + results.test2)/2 as cav, (results.exam + (results.test1 + results.test2)/2)/2 as totalmark')->get();
return view('admin.results.studentresultsheet', compact('results', 'myclass', 'studentname','resultpercent', 'countsubjects'));
}
谢谢。