当前位置:首页 » 编程语言 » sql考勤统计表
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql考勤统计表

发布时间: 2022-06-07 16:56:30

‘壹’ 求助求助,一条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' 的形式进行判断。

在试一下。

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

‘贰’ sql server 怎么做一个考勤统计

ifobject_id('tb_month')isnotnull
droptabletb_month

createtabletb_month(
idintidentity(0,1)notnullprimarykey,
dtdatetime,wkint,wdint,holidayintdefault0
)

insertintotb_month
selecttop32null,null,null,0
fromsysobjects

declare@todaydatetime
set@today=dateadd(month,datediff(month,0,getdate()),0)

updatetb_monthset
dt=@today+id

updatetb_monthset
wd=datepart(weekday,dt)
,wk=datepart(week,dt)

updatetb_monthset
holiday=1
wherewdin(1,7)

deletefromtb_month
wheremonth(dt)!=month(@today)

select*fromtb_month

‘叁’ Sql 如何将表中的考勤记录,按时间段统计次数,不分工号,只按日期和时间段

select convert(char(10),iotime,120) as 日期,sum(case when datediff(Hour,convert(char(10),iotime,120),iotime)>=15 then 1 else 0) as 15点之后的个数,sum(case when datediff(Hour,convert(char(10),iotime,120),iotime)<15 then 1 else 0) as 15点之前的个数 from 表名 where 这的条件看自己的了,愿意一天或者一个时间段都可以了

‘肆’ 求sql sever语句统计出勤,排行榜, 考勤表每天有一条记录.也证明出勤了.

SELECT A.部门名.A.NAME,B.KQCS
FROM
(SELECT A.NAME,A.XH,B.部门名 FROM 人事 A,部门表 B WHERE A.BMID = B.ID ) A

LEFT OUTER JOIN
(
SELECT XH,COUNT(*) KQCS
FROM 考勤表 A

GROUP BY CONVERT(CHAR(10),A.TIME,120),XH
) B
ON A.XH = B.XH
ORDER BY A.部门名,B.KQCS DESC

‘伍’ SQL考勤统计语句,求助

select name,
sum(case when intime between '8:00' and '8:29' then 1 else 0 end ) as '迟到',
sum(case when intime between '8:30' and '9:00' then 1 else 0 end ) as '缺勤'
from table1
group by name

因为“8:30”是一个公用时间点,不能判别式迟到还是缺勤,
所以迟到我换成“8:29”了

‘陆’ sql 学生考勤统计

请问,如果我晚上课晚签到差值也等于45,似乎违背了目的。

‘柒’ 如何通过SQL语句进行考勤统计

selectnameas"名字",

max(decode(date_time,'2010/3/50:00:00',type))as"2010/3/50:00:00",

max(decode(date_time,'2010/3/60:00:00',type))as"2010/3/60:00:00",

max(decode(date_time,'2010/3/70:00:00',type))as"2010/3/70:00:00",

max(decode(date_time,'2010/3/80:00:00',type))as"2010/3/80:00:00"

fromtmp

groupbyname

orderbyname;

我用的是Oracle数据库

我的表结构如下图所示:

‘捌’ sql 统计出勤状况 select

select a.name,
(select count(1) from b
where b.usid=a.usid and b.状态='迟到' group by b.usid) as ‘迟到’,
(select count(1) from b
where b.usid=a.usid and b.状态='早退' group by b.usid) as ‘早退’
from a

‘玖’ sql统计一个月一共出勤多少天

出勤天数
select * from 考勤表 where (intkqstate<7 and outkqstate<7) and 日期 between '2009-1-1' and '2009-1-31' and 员工ID=" & ID
如果不查某个人的,就不用加员工ID这个条件

未出勤天数:
select * from 考勤表 where (intkqstate>6 and outkqstate>6) and 日期 between '2009-1-1' and '2009-1-31' and 员工ID=" & ID

‘拾’ SQL月度考勤表,怎么写统计表。

把数据表导出后用透视表进行操作,可以实现分类统计,然后你再建立新表格,把分类好的数据复制粘贴上去就是了。