Office中国论坛/Access中国论坛

标题: 加班小时如何计算 [打印本页]

作者: fine88888888    时间: 2011-7-8 09:45
标题: 加班小时如何计算
如下表:
13        14        13        8        16
0        13        14        16        18
13        14        13        13        16
13        14        13        13        13
大於8小时则为加班小时,如何用公式计算?大於8则用单元格-8,小於8单元格则为0;比如第一例加班小时为(13-8+14-8+13-8+8-8+16-8)=24
作者: todaynew    时间: 2011-7-8 10:31
fine88888888 发表于 2011-7-8 09:45
如下表:
13        14        13        8        16
0        13        14        16        18

假设你的字段名称为周一、周二。。。周五,则可写为:
select 姓名,(周一+周二+周三+周四+周五)-40 as 加班时间 from 工时表
作者: fine88888888    时间: 2011-7-8 13:41
todaynew 发表于 2011-7-8 10:31
假设你的字段名称为周一、周二。。。周五,则可写为:
select 姓名,(周一+周二+周三+周四+周五)-40 as 加 ...

假设你的字段名称为周一、周二。。。周五,则可写为:
select 姓名,(周一+周二+周三+周四+周五)-40 as 加班时间 from 工时表
作者: fine88888888    时间: 2011-7-8 13:46
fine88888888 发表于 2011-7-8 13:41
假设你的字段名称为周一、周二。。。周五,则可写为:
select 姓名,(周一+周二+周三+周四+周五)-40 as 加 ...

假设你的字段名称为周一、周二。。。周五,则可写为:
select 姓名,(周一+周二+周三+周四+周五)-40 as 加班时间 from 工时表

版主可能没了解清楚条件,上班小时是已知的,详细如,张三,周一上班13小时,周二上班15小时,周三上没上班则0小时,周四上班8小时,周五上班4小时,周六上班11小时。那么张三此周共加班应为:15小时。按你的公式计算则为11小时,这是错误的。

作者: 轻风    时间: 2011-7-8 14:18
本帖最后由 轻风 于 2011-7-8 14:20 编辑

你这是啥表,ACCESS吗?建议表改成如下格式先:
姓名  星期  工时
张三  一  13
张三  二  15
李四  一  11
...
或者星期用日期代替更好,有了日期也可以转为星期。

然后就可以统计:
SELECT 表1.姓名, Sum([工时]-8) AS 加班时间
FROM 表1
WHERE ((表1.工时)>8)
GROUP BY 表1.姓名;

WHERE后面还可根据需要加入时间条件,比如某月的加班,所以也是要建议把星期字段改成日期的原因。


作者: todaynew    时间: 2011-7-8 14:44
fine88888888 发表于 2011-7-8 13:46
假设你的字段名称为周一、周二。。。周五,则可写为:
select 姓名,(周一+周二+周三+周四+周五)-40 as 加 ...

你是代表资方还是代表劳方?
作者: fine88888888    时间: 2011-7-8 16:59
你这是啥表,ACCESS吗?建议表改成如下格式先:
姓名  星期  工时
张三  一  13
张三  二  15
李四  一  11


姓名 1号 2号 3号 4号.......31号
张三 13    14    6    15.......  11
李四 12      5     0    13 .......  4

嘿嘿~~~我是代表劳方
作者: todaynew    时间: 2011-7-8 20:56
fine88888888 发表于 2011-7-8 16:59
姓名 1号 2号 3号 4号.......31号
张三 13    14    6    15.......  11
李四 12      5     0    13 ...

周四放半天假,周六还要算加班费,老板能同意吗?
作者: fine88888888    时间: 2011-7-9 08:39
周四放半天假,周六还要算加班费,老板能同意吗?

这公司就是这样的,星期天上班不算加班,但可以调休,就是说星期天上班了,可以在周一或周五随便那天调休。
作者: todaynew    时间: 2011-7-9 10:26
本帖最后由 todaynew 于 2011-7-9 10:29 编辑
fine88888888 发表于 2011-7-9 08:39
这公司就是这样的,星期天上班不算加班,但可以调休,就是说星期天上班了,可以在周一或周五随便那天调休 ...


select 姓名,(iif(周一<8,8,周一)+iif(周二<8,8,周二)+iif(周三<8,8,周三)+iif(周四<8,8,周四)+iif(周五<8,8,周五))-40 as 加班时间 from 工时表
作者: fine88888888    时间: 2011-7-9 10:38
确实能解决问题,但查询超长了些,需要31个IIF,版主,能不能用个变量或函数?
作者: todaynew    时间: 2011-7-9 10:55
fine88888888 发表于 2011-7-9 10:38
确实能解决问题,但查询超长了些,需要31个IIF,版主,能不能用个变量或函数?

不会吧?你把31天都搞成字段了?
请按5楼轻风同志意见修改数据表,用一个字段来记录工作时间。在此基础上用分组查询进行统计之。
作者: fine88888888    时间: 2011-7-9 11:37
谢谢!试试~~
作者: roych    时间: 2011-7-10 18:19
fine88888888 发表于 2011-7-9 10:38
确实能解决问题,但查询超长了些,需要31个IIF,版主,能不能用个变量或函数?

我们公司的考勤表用的是Excel格式:
第一行是上班类型(早班、中班、夜班、年假、婚假、事假,加早、加夜……)
第二行是班后加班小时数。
那么如果是班后加班的话直接统计小时数;
如果是休息加班的话,统计:(加早+加中+加夜)*8
如果是节日加班的话,类似地:(节早+节中+节夜)*8

如果改为Access,分开成两个表。一个是正常考勤记录,另一个是加班记录也不见得不行。





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3