【问题标题】:How to sum Total Time for each user in a while loop PHP如何在while循环PHP中总结每个用户的总时间
【发布时间】:2014-08-26 20:39:57
【问题描述】:

我有这张桌子(例如)

    id      userId     totalHours      isOt
    1       1          0830            1
    2       4          0630            0
    3       1          0730            0
    4       2          0900            1

我需要找到每个用户的总小时数,但它们应该为每个用户显示一次(分组依据)

然后,如果 totalHours 被授予为 OT(随着时间 == 1),totalHours 减去 0800 小时之间的差也应加总并显示在另一列中。

我曾尝试将此表与用户表连接,但循环似乎非常错误,最终将每个循环中的所有最后一个值加总到另一个。

希望有人可以提供帮助,感谢您的帮助

【问题讨论】:

  • 您能否展示您尝试过的代码,以便人们可以帮助您找出不正确的地方?

标签: php mysql loops while-loop sum


【解决方案1】:

在您的数据库查询中执行此操作,而不是 PHP:

SELECT UserId,
       SUM(totalHours) AS totalTime,
       SUM(IF(isOt, totalhours-800, 0)) AS totalOt
FROM yourTable
GROUP BY UserId

【讨论】:

  • 嗨,Barmar,我如何在这个问题中发布表格,我不知道在这里发布代码。
  • 粘贴预格式化文本,然后使用{} 代码标记工具。
  • 嗨,Barmar,我已经解决了。在尝试您建议的查询后,总小时数小于 0800 的某些行返回负值(发生减法)
  • 如果您不想允许否定,请使用GREATEST(0, totalHours-800)
  • 顺便说一句,这些时间是可以加减的正常数字,还是HHMM?您需要将它们转换为普通数字才能对它们使用常规算术。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-27
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 2016-06-25
相关资源
最近更新 更多