首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算正常工时和加班工时

计算正常工时和加班工时
EN

Stack Overflow用户
提问于 2015-07-05 05:35:00
回答 1查看 3.3K关注 0票数 1

您好,我需要帮助编写sql查询来计算两个员工的正常时间和超过时间的小时数,weeks.Here是我的时间表中的一个员工的数据。

代码语言:javascript
运行
复制
Username      hours     date
JohnSmith     3.75       5/25/2015
JohnSmith     11         5/26/2015
JohnSmith     10.25      5/27/2015
JohnSmith     13         5/28/2015
JohnSmith     13         5/29/2015
JohnSmith     14         5/30/2015
JohnSmith     9          5/31/2015
JohnSmith     12         6/1/2015
JohnSmith     12.5       6/2/2015

如果小时数大于40,则将其添加到加班小时数中。这听起来很简单,因为我真的很难做到这一点。如果我把小时数加起来,那么这两周的总时数超过了80小时。我应该如何求和,以便当总和大于40时,应将其添加到加班中。敬请指教。

EN

回答 1

Stack Overflow用户

发布于 2015-07-05 05:48:56

给定您的样本数据,如果您想要的结果如下:

代码语言:javascript
运行
复制
Username    Week    total   Non_overtime    Overtime
JohnSmith   22      65.00   40.00           25.00
JohnSmith   23      33.50   33.50           0.00

那么像这样的查询应该接近您想要的结果:

代码语言:javascript
运行
复制
select 
    Username
    , datepart(week,date) as Week
    , sum(hours) total
    , case when sum(hours) <= 40 then sum(hours) else 40 end as Non_overtime
    , case when sum(hours)  > 40 then sum(hours) - 40 else 0 end as Overtime
from t 
group by Username, datepart(week, date)

Sample SQL Fiddle

我使用了MS SQL Server语法,但唯一特定于方言/系统的是用于提取星期的日期函数。

查询可以改进很多,但由于不知道您实际想要的结果或使用的数据库,我将跳过这一部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31225285

复制
相关文章

相似问题

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