SQL语句实例中的六人事系统中的缺勤(休假)统计
复制代码代码如下所示:-这是一个人事制度的例子,需要记录员工的缺席。
--- 1。是在表的频繁absenteeer分数罚分。
-规则:
--- 1。如果员工在一年内缺少工作分数,50的员工可能被解雇。
--- 2。如果员工缺勤超过一天,将被视为长期病假。此时,第二天、第三天和几天后将不算雇员的缺席。
这些天不是缺乏责任。
创建表的缺失
(
工号为不空,
absencedate日期不为空,
nvarchar(100)无效的原因,
severitypoints int
)
去
---- 2。如果员工缺勤超过一天,将被视为长期病假。此时,第二天、第三天和几天后将不算雇员的缺席。
这些天不是缺乏责任。
-这是怎么实现的呢
最简单的方法是让severitypoint可以0
-延长长期病假,而缺勤则为0。
更新没有设置severitypoints = 0,原因为病假
在存在(SELECT * FROM缺失一个工号= a.empid缺席。
没有。absencedate = DateAdd(D,1,a.absencedate)
)
- 1。如果员工在一年内缺少工作分数,50的员工可能被解雇。
选择工号,和(severitypoints)作为成绩
从缺失
集团通过工号
-删除
——删除员工的工号=(选择a.empid从缺失,a.empid = employee.empid组)
—
-上面的陈述中有错误吗
-是的。
--- 1。子查询不需要按钮,检查员工的缺勤率得分达到或超过50年。它需要在子名称中添加额外的日期范围检查。
-修改后删除
——删除员工的工号=(选择a.empid从缺失,a.empid = employee.empid
absencedate之间-- DateAdd(D,365,getdate())和getdate()
通过a.empid具有和群(severitypoints)> = 50)
—
- 2删除员工删除后的员工缺勤记录,需要显式删除或隐式删除,隐式删除可以添加级联删除。
假设员工在没有工作的情况下不更换部门,可以使用以下语句改善工作绩效
更新没有设置severitypoints = 0,原因为病假
在存在(SELECT * FROM缺席一个a.empid = absence.empid和
DateAdd(D,1,没有。absencedate)= a.absencedate
)
- -第三,考虑以下事项:
比如,一周的病假,如果你周末生病了,对公司来说没有问题,因为周末不工作。
然后你在第二个星期一的星期不上班,星期一第三个星期你都不上班。上述更新声明只需在第二周工作五天。
For long sick leave, the first week's Friday and the third week Monday will be regarded as absence and calculation of absence.So the subquery in the update above needs to be
-缺少额外处理的一系列日期。
-方法:
--- 1。在预定的休息日(星期六、星期日、51、十一)在没有代码的情况下加上0分,可以避免周末和假日的问题。
-对于这种问题,您需要添加一个新的表日历来计算员工的工作。
创建表的日历
(
calendardate datetime日期
几周,几周
周日varchar(20),-本周周
)
选择工号,和(severitypoints)分数
从A,B
在b.calendardate = a.absencedate之间和a.absencedate DateAdd(D,365,getdate())
和getdate()
集团通过工号
具有总和(a.severitypoints)> = 50
去
桌子上没有下降
日历表