首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为特定用户选择特定月份和年份的总小时数

为特定用户选择特定月份和年份的总小时数
EN

Stack Overflow用户
提问于 2016-12-09 04:52:09
回答 1查看 163关注 0票数 1

您好,我正在尝试实现一个查询,从数据库与小时和日期,我可以选择某些部门的所有小时的总和,在某些年份。

表格示例如下:

到目前为止,我生成的查询如下:

代码语言:javascript
运行
复制
    SELECT t.clientid, t.date, t.department, t.time,
                        (SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( `time` ) ) ) FROM time_management  WHERE YEAR(t.date)='$year' AND MONTH(t.date)= 12 GROUP BY t.clientid ) as january,
                        (SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( `time` ) ) ) FROM time_management  WHERE YEAR(t.date)='$year' AND MONTH(t.date)= 2 GROUP BY t.clientid ) as february
                        FROM time_management t GROUP by t.clientid

我想要做的是为2016年1月选择所有小时的总和。在当前状态下,我将获得所有客户端的所有小时总和的结果,并且我希望逐个客户端获得结果:

当前结果为:

所以我正在寻找的是如何获得按clientid分组的次数结果的总和,并得到2个结果,而不是只有1个结果。两个客户端id的总和。分别对每一个进行求和?

任何帮助都将不胜感激。谢谢!

EN

Stack Overflow用户

发布于 2016-12-09 05:34:48

您应该能够在没有子查询的情况下执行此操作-

代码语言:javascript
运行
复制
SELECT `date`, `department`, SUM(`time`)
    FROM `time_management`
    WHERE YEAR(`date`)='$year' AND MONTH(`date`)= 12
    GROUP BY `client_id`

我建议您在数据库中以秒为单位存储时间-它唯一需要显示为小时和分钟的时间是当它被格式化以在客户端屏幕上显示时。如果您确实将其存储为字符串,则必须将所有转换内容放回原处。

再看一看,我还建议您将年和月存储为单独的列,或者存储为基于模式的整数:可能是201612,或者类似的东西。这也会清理你的where子句。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41048601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档