SQL46 查询培训指定课程的员工信息

问题:请查询培训课程course3的员工信息?
注:只要培训的课程中包含course3课程就计入结果
要求输出:员工id、姓名,按照员工id升序排序;
select s.staff_id,s.staff_name from staff_tb s inner join 
( select
            info_id,
            staff_id,
            case
                when substring(course, 1, 7) = 'course1' then 1
                when substring(course, 9, 7) = 'course1' then 1
                when substring(course, 17, 7) = 'course1' then 1
                else 0
            end as course1,
            case
                when substring(course, 1, 7) = 'course2' then 1
                when substring(course, 9, 7) = 'course2' then 1
                when substring(course, 17, 7) = 'course2' then 1
                else 0
            end as course2,
            case
                when substring(course, 1, 7) = 'course3' then 1
                when substring(course, 9, 7) = 'course3' then 1
                when substring(course, 17, 7) = 'course3' then 1
                else 0
            end as course3
        from
            cultivate_tb) a on s.staff_id=a.staff_id
        where a.course3=1
这个需求本质上是在识别完成指定课程培训的员工群体,用来分析培训覆盖情况、培训深度以及不同组织人群的达成差异。
我会先明确统计口径,核心是确认目标课程是单门还是课程组合,以及判断逻辑是任意参加即可,还是必须全部参加。
在计算上,通常会先从培训表中识别员工参加过的课程,由于课程字段是逗号拼接的字符串,实际处理时要先拆解或匹配出员工与课程的对应关系;如果是组合课程要求,就按员工统计已完成的目标课程数,筛选出满足要求的员工;最后再关联员工表输出员工基本信息。
在分析层面,我不会只停留在名单本身,还会进一步看培训覆盖率、课程组合达成率,以及在部门、岗位、性别等维度下的差异。
从业务链路看,这个指标属于培训参与和培训达成阶段,用来判断培训体系是否真正覆盖到目标员工,以及不同组织人群的培训落实情况。
最终会基于结果形成业务结论,并进一步落到培训推进、补训机制、岗位课程匹配和培训体系优化等关键动作上。
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务