求助:sql考勤统计问题。

忍住 2018-06-05 01:57:23


统计整月的出勤天数,早班天数,夜班天数,中班天数等。具体应该怎么实现?

...全文
480 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
忍住 2018-06-06
  • 打赏
  • 举报
回复
已解决,谢谢1L @半世笙箫
忍住 2018-06-06
  • 打赏
  • 举报
回复
引用 1 楼 weixin_38357227 的回复:
早班是怎么定义的?pb_kqlx=‘白’?
按照 pb_kqlx=‘白’ 等价于 早班
pb_kqlx=‘夜’ 等价于 夜班
pb_kqlx=‘中’ 等价于 中班
出勤天数 等价于 总天数- pb_kqlx=‘休‘的天数
则SQL 如下:
select pb_name as 姓名 , aa as 出勤天数,  白 as 早班,中 as 中班,夜 as 夜班 
from (
select pb_name,pb_kqlx,count(*) sum_1 ,
(select count(*) from t11 b where pb_kqlx<>'休' and a.pb_name=b.pb_name) as aa
from t11 a group by pb_name,pb_kqlx
)t1
pivot(max(sum_1) for pb_kqlx in ([白],[休],[夜],[中])) as p



还有个需要请教的,额外添加一列来标注是否加班。在统计时候应该怎么区分加班的不同类型呢?

忍住 2018-06-06
  • 打赏
  • 举报
回复
引用 1 楼 weixin_38357227 的回复:
早班是怎么定义的?pb_kqlx=‘白’? 按照 pb_kqlx=‘白’ 等价于 早班 pb_kqlx=‘夜’ 等价于 夜班 pb_kqlx=‘中’ 等价于 中班 出勤天数 等价于 总天数- pb_kqlx=‘休‘的天数 则SQL 如下:
select pb_name as 姓名 , aa as 出勤天数,  白 as 早班,中 as 中班,夜 as 夜班 
 from (
select pb_name,pb_kqlx,count(*) sum_1 ,
(select count(*) from t11 b where pb_kqlx<>'休' and a.pb_name=b.pb_name) as aa 
 from t11 a group by pb_name,pb_kqlx
)t1
 pivot(max(sum_1) for pb_kqlx in  ([白],[休],[夜],[中])) as p 
出勤天数 等价于 总天数- pb_kqlx=‘休‘的天数。 出勤天数 = 总天数 - (休息+事假+年休等等)
半世笙箫 2018-06-05
  • 打赏
  • 举报
回复
早班是怎么定义的?pb_kqlx=‘白’?
按照 pb_kqlx=‘白’ 等价于 早班
pb_kqlx=‘夜’ 等价于 夜班
pb_kqlx=‘中’ 等价于 中班
出勤天数 等价于 总天数- pb_kqlx=‘休‘的天数
则SQL 如下:
select pb_name as 姓名 , aa as 出勤天数,  白 as 早班,中 as 中班,夜 as 夜班 
from (
select pb_name,pb_kqlx,count(*) sum_1 ,
(select count(*) from t11 b where pb_kqlx<>'休' and a.pb_name=b.pb_name) as aa
from t11 a group by pb_name,pb_kqlx
)t1
pivot(max(sum_1) for pb_kqlx in ([白],[休],[夜],[中])) as p

588

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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