[数据库] 一文搞懂case when所有使用场景「建议收藏」

[数据库] 一文搞懂case when所有使用场景「建议收藏」前几天,为了给产品分析当前用户数据结构,写sql的时候使用到了casewhen,今天来总结一下casewhen的使用方法,以此为戒,感觉写的不好请拍砖,感觉写的还可以,给哥们点个赞,或者回复一下,让我意识到我不是一个人在战斗,好了废话不多说了,进入正题。关于casewhen的使用情况,我总结下来有三种,第一、等值转换,第二、范围转换,第三、列转行操作。等值转换咱们在设计数据库的…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前几天,为了给产品分析当前用户数据结构,写sql的时候使用到了case when,今天来总结一下case when 的使用方法,以此为戒,感觉写的不好请拍砖,感觉写的还可以,给哥们点个赞,或者回复一下,让我意识到我不是一个人在战斗,好了废话不多说了,进入正题。

关于case when的使用情况,我总结下来有三种,第一、等值转换,第二、范围转换,第三、列转行操作。

等值转换

咱们在设计数据库的时候总是会把用户的性别用int存储(’0’为女,’1’为男),但是怎么把它转换成汉字显示呢?

原始表数据

[数据库] 一文搞懂case when所有使用场景「建议收藏」

SQL语句

select
name as ‘名字’,
(case sex when 0 then ‘女’ else ‘男’ end) as ‘性别’
from test.student;

ps.最后的 ‘end’ 别丢了,我刚开始使用的时候我就有这个毛病,并且一般的case when语句都会比较长,最好添加小括号包起来,这样更容易阅读。

查询结果

[数据库] 一文搞懂case when所有使用场景「建议收藏」

范围转换

有的时候,也会遇到这种情况,按照用户成绩显示优(90+)、良(80-90)、及格(60-80)、未及格(60-),这个跟第一个不同的是,他是一个分数的范围,要怎么转换成汉子显示呢?你可能觉得很简单,不就是吧when那换成条件吗?先打住咱们往下看

原始表数据

[数据库] 一文搞懂case when所有使用场景「建议收藏」

 

SQL语句

select 
name as ‘姓名’
,(case score when score>=90 then ‘优’ when score>=80 then ‘良’ when score>=60 then ‘及格’ else ‘不及格’ end) as ‘等级’
from test.stu_score; 

这样写对不?

。

。

。

这个查出来的结果是

[数据库] 一文搞懂case when所有使用场景「建议收藏」

 

[数据库] 一文搞懂case when所有使用场景「建议收藏」

这是为啥呢?想明白了吗? 

因为 case when就像一个 switch case语句一样,如果你在case后填了东西,它会拿后它跟when 对比,咱们的 写的case 后写=了 score 而when后面写了score>=90 ,然而,’score’ 等于 ‘score>=90’吗? 显然不等于,那该怎么写呢?

select 
name as ‘姓名’
,(case score when score>=90 then ‘优’ when score>=80 then ‘良’ when score>=60 then ‘及格’ else ‘不及格’ end) as ‘等级’
from test.stu_score; 

[数据库] 一文搞懂case when所有使用场景「建议收藏」

 

列转行操作

还是用学生的例子吧,现在有图1学生成绩数据, 现在要怎么按图2显示出来呢?

图1

[数据库] 一文搞懂case when所有使用场景「建议收藏」

图2

[数据库] 一文搞懂case when所有使用场景「建议收藏」

 

第一步 先按照科目分开, 符合条件的设置分数,不符合的给置零。

select name as ‘姓名’
,(case course when ‘语文’ then score else 0 end) as ‘语文’
,(case course when ‘数学’ then score else 0 end) as ‘数学’
,(case course when ‘英语’ then score else 0 end) as ‘英语’
from test.course_score

[数据库] 一文搞懂case when所有使用场景「建议收藏」

 

然后再按照名字group by ,对分数求max。

select name as ‘姓名’
,max(case course when ‘语文’ then score else 0 end) as ‘语文’
,max(case course when ‘数学’ then score else 0 end) as ‘数学’
,max(case course when ‘英语’ then score else 0 end) as ‘英语’
from test.course_score group by name;

[数据库] 一文搞懂case when所有使用场景「建议收藏」

 

后天就是除夕了,在这里给各位CSDN的朋友拜个早年,祝各位在新一年里,工资翻倍,不掉头发!

老铁们,别光收藏啊,点个赞再走啊!

❤️ 看完三件事

如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个小忙:

  1. 点赞,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)
  2. 微信搜索jinhuazhe2010加我,进组织,不定期分享干货。
  3. 也看看其它文章
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196898.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java官方编译器_JAVA 编译器

    java官方编译器_JAVA 编译器javac做了些什么?说白了,javac就是一个编译器;编译器就是把一种语言规矩转换成另一种语言规矩,也就是将对人友好的语言转换成对机器友好的语言。因此,javac是把Java源代码编译成Java字节码,即JVM可以识别的二进制;表面上就是将.java文件转成.class文件。javac做了些什么?主要由4个模块组成。词法剖析器:识别Java中的if、else、for、while等关键字及其语句的…

    2022年7月13日
  • 两周搞定计算机专业毕业设计,附源码+论文+答辩

    两周搞定计算机专业毕业设计,附源码+论文+答辩毕设+论文+答辩通关法则,看这一篇,源码都在下面了!写在前面,尽管论文方法和毕设源码都有,但还是要看课+自己敲完完善好。做好充分准备面对答辩。文章目录一、毕设二、论文2.1论文标题2.2确定论文大纲2.3论文内容2.3.1文科找文献:2.3.2论文摘要2.3.3绪论2.3.4论文内容2.4论文查重三、答辩3.1论文答辩前的准备3.2论文答辩现场对弈一、毕设毕设直通车《黑马智慧物业毕业设计》【毕设项目】01网上购物商城(前端+后端+云部署)【毕设项目】02网上购物商城(前端

    2022年7月26日
  • Java sdk安装及配置[通俗易懂]

    Java sdk安装及配置[通俗易懂]1.安装JavaSDK开发环境。首先去官网下载JavaSDK,http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,下载完成之后,开始安装。点击下一步,安装完成。2.配置JavaSDK环境变量单击“计算机-属性-高级系统设置”,单击“环境变

    2022年7月9日
  • 简单网页计算器代码大全_用web制作简单计算器

    简单网页计算器代码大全_用web制作简单计算器注:本人为初学者,欢迎各位大神指教简单计算器实现效果:HTML代码counter.html计算器

    2022年10月13日
  • 微服务架构设计_中台微服务架构设计模式

    微服务架构设计_中台微服务架构设计模式微服务软件架构是一个包含各种组织的系统组织,这些组件包括Web服务器,应用服务器,数据库,存储,通讯层),它们彼此或和环境存在关系。系统架构的目标是解决利益相关者的关注点。Conway’

    2022年8月6日
  • oracle数据库备份出现错误:RMAN-03002 ORA-19809 ORA-19804

    oracle数据库备份出现错误:RMAN-03002 ORA-19809 ORA-19804

    2021年8月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号