一个面试题目,求解

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

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



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

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

所在部门|员工id|员工性名|迟到次数|早退次数|
...全文
215 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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?

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧