题解 | #统计所有课程参加培训人次#
统计所有课程参加培训人次
https://www.nowcoder.com/practice/98aad5807cf34a3b960cc8a70ce03f53
/*substring_index substring_index(str,delim,count) str:要处理的字符串 delim:分隔符 count:计数 即 字符串截取函数,例子:str = 1|2|3|4|5 substring_index(str,'|',1)=1 substring_index(str,'|',2)=1|2 也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容;相反,如果是负数,那么就是从右边开始数,第N个分隔符右边的所有内容,如 substring_index(str,'|',-1)=5 如果要获得中间的数据,只需要调用两边函数即可,即先获取左边全部内容,然后获取右边的第一个,如 substring_index(substring_index(str,'|',2),'|',-1)=2 */ #用substring_index切割也特别麻烦,而且分出来的列没有统计价值,通过观察题目,发现只要算数量就可以了,那就通过替换函数法来计算逗号数量,1个逗号等于2课程,2个逗号等于3科创, with cnt1 as ( select *, length(course)-length(replace(course,',',''))+1 as cnt from cultivate_tb where course is not null ) select sum(cnt) as staff_nums from cnt1
用substring_index切割也特别麻烦,而且分出来的列没有统计价值,通过观察题目,发现只要算数量就可以了,那就通过替换函数法来计算逗号数量,1个逗号等于2课程,2个逗号等于3课程