
1首先,看一下原始数据。一般打卡记录都至少包含姓名(或员工号)、日期和时间信息。实际可能出现的情况包括漏打卡,也就是某个人一天只有一次打卡记录;重复打卡,也就是一天超过两次打卡记录。下面,我们通过 *** 作来识别这些情况。
2首先,选中原始数据区域,选择功能区的插入-数据透视表。
3按照默认设置,点击确定按钮在新表中创建数据透视表。
4创建数据透视表后效果如下图,工作表界面是空的数据透视表,右侧是数据透视表各字段及行标签、数值等字段拖动区域。
5将姓名字段拖到行标签处,将刷卡时间拖到数值框。
6点击刷卡时间字段,选择值字段设置。
7如下图,更改名称为“上班时间”,下面选择最小值。
8同样的方法,再次拖动刷卡时间字段到数值框,设置字段,更改名称为“下班时间”,下面选择最大值。
9选中透视表中的数值区域,鼠标右键选择设置单元格格式,选择一个时间格式。
10这样,就生成了一个包含人名和上下班时间的统计表,一目了然。
11下一步可以进行如下 *** 作进一步 *** 作和识别异常情况:
1)如果上班时间和下班时间一致,则为员工漏打卡,如下图红色框中记录;
2)通过判断上班时间是否在规定的上班时间之前来识别员工是否迟到;
3)通过判断下班时间是否在规定的下班时间之后来识别员工是否早退。
1、date +%w
%w day of week (06); 0 is Sunday
2、如果星期2-6,上一个工作日肯定就是
t1=`date -d yesterday`
或者
t2=`date -d -1day`
3、如果星期天,上一个工作日肯定就是
t3=`date -d -2day`
4、如果星期1,上一个工作日肯定就是
t4=`date -d -3day`
5、法定节假日根据实际情况算吧
6、实例
#!/bin/sh
week=`date +%w`
case "$week" in
0)
last_work_day=`date -d -2day`
;;
1)
last_work_day=`date -d -3day`
;;
)
last_work_day=`date -d -1day`
;;
esac
echo $last_work_day
假设您的工作日表的结构如下:
CREATE TABLE workdays (
workday_date DATE,
is_workday BOOLEAN
);
其中,workday_date列存储日期信息,is_workday列存储该日期是否为工作日的信息。
要使用 LEAD 和 OVER 函数显示当前日期字段和下 3 个工作日字段,可以使用以下 SQL 查询语句:
SELECT
workday_date AS current_workday,
LEAD(workday_date, 1) OVER (ORDER BY workday_date) AS next_workday_1,
LEAD(workday_date, 2) OVER (ORDER BY workday_date) AS next_workday_2,
LEAD(workday_date, 3) OVER (ORDER BY workday_date) AS next_workday_3
FROM workdays
WHERE is_workday = TRUE;
这个查询语句中,LEAD 函数用于获取当前日期字段的下一个工作日字段,OVER 函数中的 ORDER BY 子句用于指定日期的排序方式。通过对 LEAD 函数的调用,我们可以获取当前日期字段的下 1、2、3 个工作日字段,从而实现了需求。同时,通过 WHERE 子句可以筛选出工作日表中的所有工作日记录。
以上就是关于Excel 如何用公式提取仅是工作日的考勤记录全部的内容,包括:Excel 如何用公式提取仅是工作日的考勤记录、linux 下 shell 脚本取上一工作日日期、我有一个工作日表,已定义日期是否为工作日,如何用lead、over函数显示当前日期字段和下3个工作日字段等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)