Расчет процентов

Я хочу сделать расчет процента посещаемости каждого ученика, и он будет отображать каждый процент посещаемости, который принадлежит каждому ученику. Ниже мой код:

<tbody>
<?php
$counter = 1;

// SUM( `studatt_endtime` - `studatt_starttime`)= total absent contact hour
// (course_contacthour * course_contactx_perWeek * 14)= total contact hour in a week
// 14 is the total week in one semester
$data = "SELECT *,
( SELECT (SUM( `studatt_endtime` - `studatt_starttime`)/(`course_contacthour` * `course_contactx_perWeek` * 14)) FROM `studentattendance` WHERE `studAtt_status`= '0' ) AS 'sum'
FROM `student` s
INNER JOIN `studentattendance` a ON s.`stud_matric`=a.`student_stud_matric`
INNER JOIN `course` c ON c.`course_code`=a.`course_course_code`
WHERE a.`course_course_code` LIKE 'CTU101'
group by a.`student_stud_matric`;";

$result = $conn->query( $data ) or die ("Error: Something went wrong...");
if( $result ){

while( $ser=$result->fetch_object() ) {

$per=number_format($ser->sum * 100, 2);

echo "<tr>
<td>
<center>$counter</center>
</td>
<td>$ser->stud_matric</td>
<td>$ser->stud_name</td>
<td>$per</td>
<td class='col-medium center'><a href='report.php?stud_matric=$ser->stud_matric'<button type='button' class='btn btn-sm btn-primary'><span class='glyphicon glyphicon-search'></span>View Attendance Report</button></a></td>
</tr>";

$counter++;
}
}
@mysqli_free_result( $result );
?>
</tbody>

( studatt_endtime - studatt_starttime) относится к срокам проведения занятия.
Там может быть несколько записей об одном и том же ученике, которые отсутствуют в классе (WHERE studAtt_status= '0') (означает, что студент отсутствует более одного раза). я использую SUM так что я могу подвести итог ( studatt_endtime - studatt_starttime) которые отвечают требованию WHERE studAtt_status= '0',

Проблема в том, что можно подвести итог общему количеству часов, отсутствующих у каждого студента. Пример: ученик по матрицу № 1 имеет 4 часа отсутствия. Таким образом, его процент отсутствия на работе должен быть 7.14,
Принимая во внимание, что ученик по матрице № 2 отсутствует в течение двух часов, поэтому его процент отсутствия на работе должен быть 3.57, Как показано ниже: (Это желаемый результат)

NO  MatricNo  Name  Percentage(%)  Action
1     1      Sara     7.14         Edit
2     2      Mike     3.57         Edit

Это то, что я хочу. Но что я получаю из приведенного выше кода, так это то, что он суммирует общий процент. Вот что я получаю:

NO  MatricNo  Name  Percentage(%)  Action
1     1      Sara     10.71       Edit
2     2      Mike     10.71       Edit

Ниже приведена подробная информация об атрибутах, содержащихся в каждой затронутой таблице:

    CREATE TABLE IF NOT EXISTS `studentattendance` (
`studAtt_id` varchar(45) NOT NULL DEFAULT '',
`course_course_code` varchar(45) DEFAULT NULL,
`studAtt_date` date DEFAULT NULL,
`studAtt_startTime` int(11) DEFAULT NULL,
`studAtt_endTime` int(11) DEFAULT NULL,
`classroom_classroom_code` varchar(45) DEFAULT NULL,
`semester_sem_id` int(11) DEFAULT NULL,
`group_group_code` varchar(45) DEFAULT NULL,
`staff_staff_id` bigint(11) DEFAULT NULL,
`student_stud_matric` int(11) DEFAULT NULL,
`faculty_fac_code` varchar(45) DEFAULT NULL,
`programme_prog_code` varchar(45) DEFAULT NULL,
`part_part_id` int(11) DEFAULT NULL,
`studAtt_status` tinyint(1) DEFAULT NULL;

    CREATE TABLE IF NOT EXISTS `student` (
`stud_matric` int(11) NOT NULL DEFAULT '0',
`stud_name` varchar(100) DEFAULT NULL,
`stud_address` varchar(100) DEFAULT NULL,
`stud_email` varchar(100) DEFAULT NULL,
`stud_phone_no` varchar(45) DEFAULT NULL,
`faculty_fac_code` varchar(45) NOT NULL,
`programme_prog_code` varchar(45) NOT NULL,
`part_part_id` int(11) NOT NULL;

    CREATE TABLE IF NOT EXISTS `course` (
`course_code` varchar(45) NOT NULL DEFAULT '',
`course_name` varchar(100) DEFAULT NULL,
`course_contacthour` varchar(45) DEFAULT NULL,
`course_credithour` varchar(45) DEFAULT NULL,
`course_contactx_perWeek` int(11) DEFAULT NULL;

Затем некоторые примеры значений INSERTED:

INSERT INTO `studentattendance` (`studAtt_id`, `course_course_code`, `studAtt_date`, `studAtt_startTime`, `studAtt_endTime`, `classroom_classroom_code`, `semester_sem_id`, `group_group_code`, `staff_staff_id`, `student_stud_matric`, `faculty_fac_code`, `programme_prog_code`, `part_part_id`, `studAtt_status`) VALUES
('2013108193CTU1012014-12-30', 'CTU101', '2014-12-30', 14, 16, 'TEC 7', 1, 'KAC110-1B', 1234567890, 2013108193, 'AC', 'AC110', 1, 0);
('2013108193CTU1012014-12-07', 'CTU101', '2014-12-07', 12, 14, 'TEC7', 1, 'KAC110-1B', 1234567890, 2013108193, 'AC', 'AC110', 1, 1);

INSERT INTO `student` (`stud_matric`, `stud_name`, `stud_address`, `stud_email`, `stud_phone_no`, `faculty_fac_code`, `programme_prog_code`, `part_part_id`) VALUES
(2013108193, 'sara', '', '', '', 'AC', 'AC110', 1);

INSERT INTO `course` (`course_code`, `course_name`, `course_contacthour`, `course_credithour`, `course_contactx_perWeek`) VALUES
('CTU101', 'FUNDAMENTALS', '2', '2', 2);

Дайте мне знать, если мне нужно дать больше информации .. TQ

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]