统计完成4个项目学习的学生名单casewhen嵌套初步应用
本帖最后由 zhaojf1978 于 2024-4-8 10:23 编辑现因需要到体校选拔完成跑步、游泳、篮球、足球4个科目学习的学生,学生情况如下,完成学习的科目都在“科目内容”列中。
学生 学号 学习科目数量 科目内容 备注
学生a 1号 6 英语,蹦床,击剑,数学,语文,游泳
学生b 2号 6 足球,跑步,游泳,篮球,语文,击剑
学生c 3号 6 游泳,英语,蹦床,击剑,语文,数学
学生d 4号 7 足球,击剑,跑步,篮球,语文,游泳,数学
学生e 5号 5 跑步,蹦床,击剑,足球,游泳
学生f 6号 8 物理,篮球,化学,蹦床,击剑,英语,游泳,语文
学生g 7号 7 生物,蹦床,英语,跑步,击剑,语文,游泳
学生h 8号 6 数学,蹦床,击剑,游泳,足球,篮球
学生i 9号 5 数学,蹦床,语文,游泳,击剑
学生j 10号 6 跑步,击剑,游泳,足球,语文,篮球
学生k 11号 6 击剑,英语,游泳,蹦床,语文,数学
学生l 12号 5 语文,足球,数学,击剑,游泳
学生m 13号 6 数学,英语,蹦床,击剑,篮球,游泳
学生n 14号 6 篮球,游泳,数学,英语,击剑,蹦床
学生o 15号 5 游泳,击剑,蹦床,化学,足球
学生p 16号 2 语文,击剑
学生q 17号 5 蹦床,游泳,击剑,篮球,语文
学生r 18号 6 语文,英语,跑步,击剑,蹦床,游泳
学生s 19号 5 跑步,篮球,击剑,足球,游泳
学生t 20号 7 击剑,足球,语文,英语,篮球,游泳,物理
学生u 21号 6 英语,游泳,语文,击剑,篮球,蹦床
学生v 22号 5 语文,游泳,英语,击剑,篮球
学生w 23号 5 游泳,蹦床,足球,篮球,击剑
学生x 24号 4 篮球,游泳,击剑,蹦床
学生y 25号 6 蹦床,篮球,击剑,英语,游泳,足球
学生z 26号 7 游泳,化学,英语,数学,篮球,击剑,语文
字符串比较函数不会使用,后面改成case when语句,查询语句如下:
--体校学校完成跑步、游泳、篮球、足球4项学生查询
SELECT *, CASE when z."4" not like '%跑步%' then -- 缺跑步
case when z."4" not like '%游泳%' and z."4" not like '%篮球%' and z."4" not like '%足球%' then '缺跑步、游泳、篮球、足球'
when z."4" not like '%篮球%' and z."4" not like '%游泳%' then '缺跑步、游泳、篮球' when z."4" not like '%篮球%' and z."4" not like '%足球%' then '缺跑步、篮球、足球'
when z."4" not like '%游泳%' then '缺跑步、游泳'
when z."4" not like '%足球%' then '缺跑步、足球'
when z."4" not like '%篮球%' then '缺跑步、篮球'
else '缺跑步' end
when z."4"not like '%游泳%' then
--有跑步,缺游泳
case when z."4" not like '%足球%' and z."4" not like '%篮球%' then '缺游泳、篮球、足球' when z."4" not like '%篮球%' then '缺游泳、篮球'
else '缺游泳' end
when z."4" not like '%篮球%' then
--有跑步,有游泳,缺篮球
case when z."4" not like '%足球%' and z."4" not like '%篮球%' then '缺篮球、足球'
else '缺篮球' endwhen z."4" not like '%足球%' then '缺足球'
ELSE '已完成' END '备注'
FROM zhaojf01 z
在Dbeaver社区版上运行成功。请教各位大师,有好的查询比较方法的话帮忙看看,能改进下其他字符比较语句最好,就是oracle特有函数不一定能用,最好是sql通用字符函数,谢谢!
页:
[1]