zhaojf1978 发表于 2024-4-7 17:02

统计完成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]
查看完整版本: 统计完成4个项目学习的学生名单casewhen嵌套初步应用