【发布时间】:2020-11-02 05:15:56
【问题描述】:
其他数据库:
您好,我想问一下如何根据所选日期范围计算每个工人 id 的小时总和,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();
?>
【问题讨论】:
-
Dataabse在上图中截图是OTHOUR的标签库
-
对不起可能误导你,但我想知道根据所选日期范围计算总小时数,而不是全部添加,结果仍然需要匹配workerid,只有小时,类型5,类型1,类型2与所选范围内相同 workerid 匹配的 type3 将加在一起
标签: php android sql android-studio