【蚂蚁】统计公司所有课程培训人次
聚合函数CASE WHEN字符串函数数据清洗面试真题
题目描述
来源:蚂蚁 SQL 面试真题
某公司共开设 3 门培训课程,员工按照自愿原则可以参加 0 至 3 门课程,每门课程每位员工最多参加一次。员工参加的课程以英文逗号分隔,保存在同一个 course 字段中;未参加培训的员工,其 course 为 NULL。
数据表
cultivate_tb 员工培训信息表
| 字段 | 类型 | 说明 |
|---|---|---|
| info_id | BIGINT | 培训信息 ID |
| staff_id | BIGINT | 员工 ID |
| course | VARCHAR | 参加的课程,多个课程以英文逗号分隔;未参加时为 NULL |
题目要求
请统计该公司所有课程的参加培训总人次。
- 一名员工参加一门课程计 1 人次。
- 一名员工参加多门课程时,每门课程分别计 1 人次。
- course 为 NULL 或空字符串时计 0 人次。
- 结果只输出一行。
期望输出列
| 列名 | 说明 |
|---|---|
| staff_nums | 所有课程的参加培训总人次 |
数据样例
| info_idPKBIGINT | staff_idBIGINT | courseVARCHAR(100) |
|---|---|---|
| 101 | 1 | course1,course2 |
| 102 | 2 | course2 |
| 103 | 3 | course1,course3 |
| 104 | 4 | course1,course2,course3 |
| 105 | 5 | course3 |
| 106 | 6 | NULL |
| 107 | 7 | course1,course2 |
输入数据显示 7 / 7 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里