我们的数据库:
您好,我想问一下如何根据选定的日期范围计算每个工人id的小时总数,类型5、类型1、类型2、类型3,如图所示?
例如,我想计算从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();
?>
1条答案
按热度按时间9vw9lbht1#