![](/img/trans.png)
[英]How to write a query to calculate the working hours, minutes, and seconds between each 'In' and 'Out' for each employee?
[英]Calculate “Working hours ” based on IN and OUT time Employee Attendance Power bi
您可以计算每个in
下一个out
并取其差:
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
和OUT
是交错的,因此一行中没有具有相同操作的行。
这也以秒为单位给出结果 - 可以转换为十进制小时数或您想要的任何其他特定格式。
在 Power BI/Power Query 中,假设您的表与您的帖子具有相同的结构,您可以使用以下脚本创建一个新表。 在此脚本yourSource
是对您的表的引用。
let
#"Sorted Rows" = Table.Sort(yourSource,{{"EmployeeID", Order.Ascending}, {"LOCAL_TIME", Order.Ascending}}),
#"Added Index" = Table.AddIndexColumn(#"Sorted Rows", "Index", 1, 1, Int64.Type),
#"Added Custom1" = Table.AddColumn(#"Added Index", "Employee_In_Out_Index", each if [Action] = "IN" then [Index] else null),
#"Filled Down" = Table.FillDown(#"Added Custom1",{"Employee_In_Out_Index"}),
#"Removed Columns" = Table.RemoveColumns(#"Filled Down",{"Index"}),
#"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"Employee_In_Out_Index", "EmployeeID", "Action", "LOCAL_TIME"}),
#"Pivoted Column" = Table.Pivot(#"Reordered Columns", List.Distinct(#"Reordered Columns"[Action]), "Action", "LOCAL_TIME"),
#"Added Custom" = Table.AddColumn(#"Pivoted Column", "Time Difference", each [OUT] - [IN])
in
#"Added Custom"
在新表中,每条记录用于一个输入输出。 这里有一个Time Difference
列,您可以在计算中使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.