sql - 根据进出时间员工出勤率计算“工作时间”
问题描述
我正在使用 Power bi,我想根据员工进出公司的时间来计算他们的工作时间。这是一个数据样本, 假设总小时数应为 7 小时 8 分钟。所以,员工出去什么都不做的时间。就我而言,我应该排除从 OUT 2:04:20 到 IN 3:09:46 大约 1 小时的时间。
解决方案
out
您可以为每个计算下一个in
并取差:
select t.employee_id,
sum(datediff(second, local_time, next_local_time)) as diff_seconds
from (select t.*,
lead(local_time) over (partition by employee_id order by local_time) as next_local_time
from t
) t
where action = 'IN'
group by t.employee_id;
注意:这假设IN
s 和OUT
s 是交错的,因此一行中没有具有相同操作的行。
这也以秒为单位给出结果 - 可以转换为十进制小时数或您想要的任何其他特定格式。
推荐阅读
- sql - 如何获取每个类别 SQL 的最低 ID
- neo4j - 无法在此处创建带有标签或属性的节点。该变量已在 Neo4j 的上下文中声明
- php - 使用 php exec() 和 ghostscript 是什么意思以及如何修复错误代码 1?
- php - 由于图片很多,首页很慢
- rest - MarkLogic:通过 REST 从集合中获取所有文档
- rest - REST API:跨版本共享资源的最佳实践
- wordpress - IE 11 未在 wordpress 中显示联系表格 7 表格
- vba - 重新排序文件选择
- java - Collections.shuffle(list) 不会打乱我的列表
- angular - 通过大列表管道