题解 | #统计所有课程参加培训人次#

统计所有课程参加培训人次

https://www.nowcoder.com/practice/98aad5807cf34a3b960cc8a70ce03f53

这道题目要求我们统计公司所有课程参加培训的人次。我们需要从员工培训信息表中提取数据,计算每个员工参加的培训课程数量,并求和得到总的人次。下面是这个SQL查询的思路和实现步骤。

1. 确定总体问题

我们需要计算每个员工参加的培训课程数量,并求和得到总的人次。

2. 分析关键问题

  • 处理空值:如果course字段为NULL,表示该员工没有参加任何课程。
  • 计算课程数量:对于非空的course字段,计算课程数量。
  • 求和:将所有员工的课程数量求和,得到总的人次。

3. 解决每个关键问题的代码及讲解

步骤1:处理空值

我们使用CASE WHEN语句来处理course字段为NULL的情况:

case
    when course is null then 0
    else length(course) - length(replace(course,',','')) + 1
end AS num
  • when course is null then 0:如果course字段为NULL,课程数量为0。
  • else length(course) - length(replace(course,',','')) + 1:计算课程数量。
步骤2:计算课程数量

对于非空的course字段,计算课程数量:

length(course) - length(replace(course,',','')) + 1
  • length(course) - length(replace(course,',','')) + 1:通过计算逗号的数量来确定课程数量。length(course)计算字符串的总长度,replace(course,',','')将逗号替换为空(即去掉逗号),原长度减去去掉逗号后的长度即为逗号的数量,加1得到课程数量。
步骤3:求和

将所有员工的课程数量求和,得到总的人次:

select
   sum(num) AS staff_nums
  • sum(num) AS staff_nums:对所有员工的课程数量求和,得到总的人次。

完整代码

select
   sum(num) AS staff_nums
from(
    select
        case
            when course is null then 0
            else length(course) - length(replace(course,',','')) + 1
        end AS num
    from
        cultivate_tb
) as sub
全部评论
真棒啊这个想法
点赞 回复 分享
发布于 06-01 17:01 广东

相关推荐

不愿透露姓名的神秘牛友
07-04 15:36
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利 有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的 真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
面试尴尬现场
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-11 13:34
offe从四面八方来:我真的没时间陪你闹了
点赞 评论 收藏
分享
Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
评论
7
2
分享

创作者周榜

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