База данных OTHOUR:
введите описание изображения здесь
Здравствуйте, я хотел бы спросить, как рассчитать общую сумму часов, type5, type1, type2, type3, как показано на картинке для каждого идентификатора работника на основе выбранного диапазона дат?
Например, я хочу рассчитать общий час рабочего с 2020-06-08 по 2020-06-21, что в результате
workerid hour type5 type1 type2 type3
04405 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00
04408 12:00:00 02:00:00 00:00:00 08:00:00 02:00:00
04458 12:30:00 00:00:00 08:00:00 04:30:00 00:00:00
, что 04408 имеет 2 дня в диапазоне дат, поэтому будет суммировать час, в то время как 04405 не имеет никакого ot в диапазоне дат, поэтому он возвращает 00: 00: 00
, как бы я поступил в sql или php, теперь я создаю приложение android, спасибо
Обновлено ---
<?php
include_once("dbconnect.php");
$sql ="with tempTable as (
select
t.workerid,
sum(DATEDIFF(minute,0,t.hour)) hour,
sum(DATEDIFF(minute,0,t.Type5)) Type5,
sum(DATEDIFF(minute,0,t.Type1)) Type1,
sum(DATEDIFF(minute,0,t.Type2)) Type2,
sum(DATEDIFF(minute,0,t.Type3)) Type3
from othour t
group by t.workerid
)
select
t.workerid,
format(DATEADD(minute,t.hour,0),'HH:mm:ss') as hour,
format(DATEADD(minute,t.Type5,0),'HH:mm:ss') as Type5,
format(DATEADD(minute,t.Type1,0),'HH:mm:ss') as Type1,
format(DATEADD(minute,t.Type2,0),'HH:mm:ss') as Type2,
format(DATEADD(minute,t.Type3,0),'HH:mm:ss') as Type3
from tempTable t";
$result= $conn -> query($sql);
if($result -> num_rows > 0) {
$response["ot"] = array();
while ($row = $result -> fetch_assoc()) {
$ot = array();
$ot[workerid] = $row["workerid"];
$ot[othour] = $row["hour"];
$ot[type5] = $row["Type5"];
$ot[type1] = $row["Type1"];
$ot[type2] = $row["Type2"];
$ot[type3] = $row["Type3"];
array_push($response["ot"], $ot);
}
echo json_encode($response);
} else {
echo json_encode("error");
}
$conn ->close();
?>