当前位置:首页 » 编程语言 » sql判断上下班考勤是否成功
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql判断上下班考勤是否成功

发布时间: 2022-09-02 07:42:40

A. 问,sql关于查询考勤系统.

遇到此类问题考虑的方向共有两种:
1。自然连结(术语叫:两个关系的笛卡尔积)
将你的现在的表与一个日期表进行广义笛卡尔积,知道吧?就是两个表的乘法,结果是列为两个表列的总和,行为两个表的行乘积。
如:A表
a.a a.b a.c
1 2 3
4 5 6
B表
b.a b.b b.c
1 5 9
3 2 8
A*B的结果就是:
a.a a.b a.c b.a b.b b.c
1 2 3 1 5 9
1 2 3 3 2 8
4 5 6 1 5 9
4 5 6 3 2 8
明白吗?
然后与现有表进行相减!A-B所得结果就是A表中有而B表中没有的记录。这样可以解决你的类似问题。

2。还有可以用程序实现:
如:查某一天的员工不在信息时,可以在考勤表中该天的所以到的员工,而用员工表相差实现。如:select * from 员工表where 姓名 not in (select 姓名 from 考勤表 where 日期=当天),当然也可以实现两表相连结后结果。
至于查总缺的次数,可以先查该月的总出勤次数就行了!这个我想你不会不会吧?用一个recordcount就行了!
我所说的程序就在这里,一个月只能查出缺勤次数,而缺勤日期,要用一个程序去频繁调用数据(可能是表或视图)去计算。数据库可能效率极低!但总可以实现的!

B. sql存储过程实例,一个关于上下班考勤的存储过程,高分

select [员工名字],min([签到时间]) [签到时间]
from [表]
where [签到时间]<'12:00'
group by [员工名字]
union
select [员工名字],max([签到时间]) [签到时间]
from [表]
where [签到时间]>'12:00'
group by [员工名字]
看有没有迟到早退用case 语句将签到时间和正常上下班时间比较就好了

C. SQL如何判断打卡记录是否异常

casewhen

日期字段in(between7.30and8.00,between12.00and12.30,between13.30and14.00,between18and18.30)then‘正常’else‘异常’end,

大概就是这么写吧,这个字段,把时间字段处理一下应该就行

D. 问一个考勤SQL语句的问题,想查询一整月考勤记录

select 员工ID,a.[1] 上班时间,b.[1] 下班时间,datediff(mm,b.[1] - a.[1]) 累计时间,
a.[2] 上班时间,b.[2] 下班时间,datediff(mm,b.[2] - a.[2]) 累计时间,.......
from

( select 员工ID,上班时间 from 考勤表
pivot ( min( 考勤时间) for datepart(dd, 考勤时间) in ( [1],[2],[3],................... )) as pvt ) a,

( select 员工ID,上班时间 from 考勤表
pivot ( mxn( 考勤时间) for datepart(dd, 考勤时间) in ( [1],[2],[3],................... )) as pvt ) b
where a.员工ID = b.员工ID

E. SQL 考勤问题

很悲催的告诉你,只能挨个核对,好点的话,用函数判断。

我们单位用的软件考勤(叮咚签到),出来的表直接显示迟到,早退什么的,灰常方便。。。

F. SQL 统计每日上班打卡和下班打卡语句

这是在oracle数据库下做的,不知道你是什么数据库,给你提供一下思路
select
card_no,
attr_date,
to_char(atte_time,'HH24:MI')tim,
doorinout,
rn
from (
select
card_no,
attr_date,
atte_time,
doorinout,
ROW_NUMBER() OVER(PARTITION BY card_no,attr_date,doorinout ORDER BY atte_time asc) rn
from(
select
card_no,
(
case
when doorinout=1
then to_date(to_char(atte_time,'yyyy-MM-dd'),'yyyy-MM-dd')
when (doorinout=0 and to_number(to_char(atte_time,'HH24'))<3)
then (to_date(to_char(atte_time,'yyyy-MM-dd'),'yyyy-MM-dd')-1)
else to_date(to_char(atte_time,'yyyy-MM-dd'),'yyyy-MM-dd')
end

)attr_date,
atte_time,
doorinout
from AtteTime
) tmp order by card_no,atte_time asc,doorinout desc
) where rn < 5

G. 求助求助,一条SQL统计考勤情况,下面的当天缺勤次数,统计不出来,帮我写出来,谢谢

把上面 “上午上班=null” 替换为

nvl((select time from qin_record where timeslotid=2 and curdate=r.curdate limit 1),'SWCD') = 'SWCD'

其他的也都替换下,null判断时是用 is null,不是 “=”,尽量不要用null直接进行判断,对于空值会判断不出来。可以用 nvl(字段,'NULL') = 'NULL' 的形式进行判断。

在试一下。

不要用 别名进行比较,而且还是中文的别名,看着很蛋疼啊...

H. 基于SQL的考勤查询系统----学习探讨

卡机系统的数据结构一般分为:考勤一套,请假一套,加班一套。
考勤不会刻意每个栏位判断一次是早上卡还是晚上卡,而是根据员工对应排班表来自行决定时间对应的考勤Type。
请假一般分带薪、半薪、无薪,调休四类。然后带薪假和半薪假一般会分顺延和扣减两类。
加班则分大,中,小三个类别,对应3工,2工,1.5工。调休则优先对应3工、2工类型扣减。
而且还需要处理跨天(我建议设置大于24小时,方便计算),调班等问题

I. sql关于查询考勤系统查询

再建立一个上班日期表,表内时应上班日期,因有节假日问题,如果是餐饮这种每人不固定的情况,只能建立人员上班情况表了。
建立存储过程
循环一,人员档案;
循环二,上班日期表,找出本月应上班的日期;
缺勤天数变量,签到表日期不在上班日期表的,为缺勤,count出天数
循环三,签到表;
缺勤时间,签到表中时间对不上,上下班时间的进行累计;
有请假、倒休、公休情况,找到对应的请假表,进行对比,调整缺勤天数和缺勤时间变量。

J. sql 考勤统计查询

select name,dept,count(*) 工作天数,sum(xbsj-sbsj) 工作累计时间,count(case when kqqk=1 then 1 end) 迟到天数,count(case when kqqk=2 then 1 end) 早退天数
from table1 join table2 on table1.uid=table2.uid
group by name,dept