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

京公网安备 11010502036488号