一个面试题目,求解

ghostking188 2006-03-16 10:13:53
今天到一家公司面试,一道数据库的题目:
两个表,
已经知道,上下午上下班要分别打卡,上午08:00以后为迟到 下午 17.00已前为早退

员工信息表t1
所在部门
员工id
员工姓名



员工考勤表t2
编号(自动编号)
员工id
考勤日期
打卡时间

试用一条sql查询以下信息 :

所在部门|员工id|员工性名|迟到次数|早退次数|
...全文
173 8 点赞 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
diaowf 2006-03-18
top
  • 打赏
  • 举报
回复
撸大湿 2006-03-17
楼主是 CSDN 第一抠!!!!!!
  • 打赏
  • 举报
回复
lalakid 2006-03-17
不考虑打卡异常吗
哎……
  • 打赏
  • 举报
回复
huailairen 2006-03-16
create view record
as
select a.员工id,b.考勤日期,min(b.打卡时间) as 上班 ,max(b.打卡时间) as 下班
from 员工信息表t1 a ,员工考勤表t2 b
where a.员工id=b.员工id
group by a.员工id ,b.考勤日期




create view tb
as
select 员工id,count(case when 上班>8 then 1 else 0 end ) as 迟到 ,count(case when 下班<17 then 1 else 0 end ) as 早退
from record
group by 员工id

select 员工信息表t1.所在部门,tb.员工id,员工信息表t1.员工性名,tb.迟到,tb.早退
from tb,员工信息表t1
where tb.员工id =员工信息表t1.员工id
  • 打赏
  • 举报
回复
rouqu 2006-03-16
楼主为人太不厚道!
  • 打赏
  • 举报
回复
rouqu 2006-03-16
如果员工考勤表t2的结构是

编号(自动编号)
员工id
考勤日期
上午打卡时间
下午打卡时间

select 员工id,迟到次数,早退次数 from
(select 员工id, count(*) 迟到次数 from t2 where 上午打卡时间 > 08:00 group by 员工id) a inner join
(select 员工id, count(*) 早退次数 from t2 where 下午打卡时间 < 17:00 group by 员工id) b on a.员工id = b.员工id
  • 打赏
  • 举报
回复
lalakid 2006-03-16
8点到17点之间我打7次卡算什么情况
  • 打赏
  • 举报
回复
rouqu 2006-03-16
一个员工一天几条记录?1 or 2?
  • 打赏
  • 举报
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-03-16 10:13
社区公告
暂无公告