【问题标题】:Is it possible to group results together after, well, grouping them together?是否可以在将结果组合在一起之后将它们组合在一起?
【发布时间】:2017-10-05 03:16:32
【问题描述】:

表结构1(时钟): 日期 |时间 |超时 |工作代码 |就业率 |员工编号

表结构2(jobdesc): 工作代码 |职位描述

所以我有一个查询:

SELECT
    jd.jobdescription,
    ci.employeeid,
    ci.jobcode,
    SUM(timestampdiff(minute,ci.timein,ci.timeout) / 60) * ci.jobrate
FROM clockins ci
RIGHT JOIN jobdesc jd ON ci.jobcode = jd.jobcode
WHERE ci.date BETWEEN '0000-00-00' AND '0000-00-00'
AND jobrate < 100 /* need this to distinguish salaried employees */ 
GROUP BY `jobcode` , `employeeid`

这会输出如下数据:

example output

我确信一定有更好的方法来实现这一点,但这种方法将其区分开来,这一点很重要,因为每个工作角色可能有不同的员工和不同的工作率。所以我需要的是一种在mysql或php中到达这一点之后缺乏更好术语“重新组合”它们的方法,或者如果你有关于如何更好地进行查询的建议,那就是我都可以。我试图找到这个,但我无法找到适合这种情况的答案。提前感谢您的帮助。

【问题讨论】:

  • 什么是“新”期望的输出?
  • 我想查看按职位描述分组的所有数据。而不是“作业类型 2”的 3 条记录,只有一条记录,但仍保留 timestampdiff 列的正确数学。我已经尝试了其他方法,但最终得到了不正确的数学,因为当将 timestampdiff 乘以 jobrate 时,它​​只在 jobrate 的第一个实例上执行等式。这不考虑不同的就业率。抱歉,我知道这很复杂,感谢您的帮助。
  • 接受一个工作,有 3 个时间戳差异你想显示什么?
  • 我不需要显示一个特定的时间戳差异,我需要对时间戳差异求和。我确信我在解释这些图片可能会有所帮助时做得很糟糕。这是我现在得到的:link 这就是我想要的:link

标签: php mysql


【解决方案1】:

我最终让同事帮忙解决了这个问题。以防万一其他人正在寻找类似的东西,这就是它在 PHP 中的完成方式:

<?php
$laborTotals = array();
$totalLaborDollars= 0;
$laborTotals[$laborAnalysis['jobcode']]['jobcode'] = $laborAnalysis['jobrole'];
    $laborTotals[$laborAnalysis['jobcode']]['jobdescription'] = $laborAnalysis['jobdescription'];
    $laborTotals[$laborAnalysis['jobcode']]['totalsalary'] += $laborAnalysis['totalsalary'];

}

foreach ($laborTotals as $labor) { 
    $html .= '  <tr>';
    $html .= '    <td class="gridData">' . $labor['jobcode'] . '</td>';
    $html .= '    <td class="gridData">' . $labor['jobdescription'] . '</td>';
    $html .= '    <td class="gridData txtLeft"><b>$</b>' . number_format($labor['totalsalary'], 2, '.', ',') . '</td>';
    $totalLaborDollars+=$labor['totalsalary'];
}

?>

【讨论】:

    猜你喜欢
    • 2021-03-26
    • 2023-03-16
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多