【问题标题】:Calculate total hour of worker based on selected date range根据选定的日期范围计算工人的总小时数
【发布时间】: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


【解决方案1】:
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 YourTable t
/*Where Conditions*/
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

【讨论】:

  • 但我无法在 json 中显示,可能是我的 php 问题,你能帮忙吗?
  • 谢谢,但我无法添加到 json,它显示错误,可能是我的 php 问题,你能帮忙吗?
  • 嗨,我真的不了解 PHP,但可以肯定查询是正确的 那么,问题或错误是什么?
  • 我无法通过 php 将数据添加到 json 中,但是在 phpmyadmin 中键入代码期间,在附近出现错误(错误与无法识别的语句类型附近)
猜你喜欢
  • 2022-07-22
  • 1970-01-01
  • 2021-05-27
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多