select sum(
    case 
    when course is null then 0
    else (length(course)-length(replace(course,',','')))+1
    end
) as staff_nums
from cultivate_tb

这题问了ai

主要考点就在于对于course一列的处理, 题目问的是A B C 的选了几门课,加起来一共是多少门。A选了3门,B选了2门,C选了4门,加起来就是9。

case when 在于新增一列,就是新增一个处理过的列,所以每一行都会有对应的结果, 也就是每一行都有,(length(course)-length(replace(course,',','')))+1 。 然后你可以使用聚合函数进行聚合。

(length(course)-length(replace(course,',','')))+1 的思路在于,用course字段的总长度减去去掉逗号的长度+1.这个数量关系不难理解。 course1,course2 。

SUM(

CASE

WHEN course IS NULL THEN 0

ELSE (计算表达式)

END

) AS staff_nums