mysql中使用CASE WHEN

简单的使用CASE WHEN

CASE SCORE WHEN 'A' THEN '优' ELSE '不及格' END
CASE SCORE WHEN 'B' THEN '良' ELSE '不及格' END
CASE SCORE WHEN 'C' THEN '中' ELSE '不及格' END

上面的sql等同于

CASE SCORE WHEN 'A' THEN '优' WHEN 'B' THEN '良' WHEN 'C' THEN '中' ELSE '不及格' END

THEN后面的值与ELSE后面的值类型应一致,否则报错:

CASE SCORE WHEN 'A' THEN '优' ELSE 0 END

'优’和0不一致会报错。

引申出几种常用场景

场景1 :有分数score,score<60返回不及格,score>=60返回及格,score>=80返回优秀

SELECTSTUDENT_NAME,(CASE WHEN score < 60 THEN '不及格'WHEN score >= 60 AND score < 80 THEN '及格'WHEN score >= 80 THEN '优秀'ELSE '异常' END) AS REMARK
FROMTABLE

场景2:现老师要统计班中,有多少男同学,多少女同学,并统计男同学有几人及格,女同学有几人及格,要求写一个sql输出结果。表结构如下,stu_sex,0表示男生,1表示女生

STU_CODESTU_NAMESTU_SEXSTU_SCORE
XM小明088
XL小磊055
XF小峰045
XH小红166
XN晓妮177
XY小伊199
select 
sum(case when stu_sex=0 then 1 else 0) male_sum,
sum(case when stu_sex=1 then 1 else 0) female_sum,
sum(case when stu_sex=0 and stu_score>=60 then 1 else 0) male_pass,
sum(case when stu_sex=1 and stu_score>=60 then 1 else 0) female_pass
from students

结果

MALE_COUNTFEMALE_COUNTMALE_PASSFEMALE_PASS
3313

场景3:经典行转列,并配合聚合函数做统计

现要求统计各个城市,总共使用了水耗、电耗、热耗,使用一条sql输出

有能耗表如下:其中,E_TYPE表示能耗类型,0表示水耗,1表示电耗,2表示热耗

E_CODEE_VALUEE_TYPE
北京28.500
北京23.511
北京28.122
北京12.300
北京15.461
上海18.880
上海16.661
上海19.990
上海10.050
select 
E_CODE,  
E_VALUE,
(case when E_TYPE = 0 then E_VALUE ELSE 0 END) WATER_ENERGY,  -- 水能
(case when E_TYPE = 1 then E_VALUE ELSE 0 END) ELE_ENERGY,	-- 电能
(case when E_TYPE = 2 then E_VALUE ELSE 0 END) HEAT_ENERGY 	-- 热能
from ENEGEY 
group by E_CODE

输出结果:

E_CODEWATER_ENERGYELE_ENERGYHEAT_ENERGY
北京40.8038.9728.12
上海48.9216.660

场景4:CASE WHEN中使用子查询

根据城市用电量多少,计算用电成本。假设电能耗单价为三挡,根据不同的能耗值,使用相应价格计算成本。

价格表如下:

P_PRICEP_LEVELP_LIMIT
1.20010
1.70130
2.50250

我只转了前面几个实用且效率会比较高的例子,觉得这篇文章解释的很到位,博客原文在这里

博客转自:https://blog.csdn.net/rongtaoup/article/details/82183743

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330922.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java生成随机数的几种高级用法

转载自 进阶 | Java生成随机数的几种高级用法&#xff01;言归正传&#xff0c;众所周知&#xff0c;随机数是任何一种编程语言最基本的特征之一。而生成随机数的基本方式也是相同的&#xff1a;产生一个0到1之间的随机数。看似简单&#xff0c;但有时我们也会忽略了一些有趣的…

Java 可重入锁内存可见性分析

转载自 深度好文 | Java 可重入锁内存可见性分析一个习以为常的细节之前在做 ReentrantLock 相关的试验&#xff0c;试验本身很简单&#xff0c;和本文相关的简化版如下&#xff1a;&#xff08;提示&#xff1a;以下代码均可左右滑动&#xff09; private static ReentrantLoc…

java正则表达式 ^expr 和 [^expr] 和 ^[^expr]的比较

public class Main {private static String[] array {"Jav", "Java", "Hello"}; public static void main(String[] args) {String[] regexs {"^Java", // 以 Java开头的字符串"[^Java]",// 除了 J a v a 之外 的任何字符…

优秀 Java 程序员写代码的风格

转载自 涨姿势 | 优秀 Java 程序员写代码的风格今天突发奇想&#xff0c;对编码习惯和 编程风格 很感兴趣&#xff0c;于是乎&#xff0c;找了一下关于编程风格&#xff08;Java篇&#xff09;的资料&#xff0c;希望对爱好编码或者开始学习编码的同学有帮助&#xff01;来自《…

2017尼毕鲁笔试算法题

【1】题目&#xff1a; 给定一个无序数组&#xff0c;找到最长的单调自增子序列&#xff08;不一定连续&#xff0c;但是顺序不能乱&#xff09;的长度&#xff1b; 【2】看个荔枝&#xff1a;给定数组 [10, 9, 2, 5, 3, 7, 101, 18] 输出结果为 [2, 3, 7, 101]。。算法时间…

2018年不能错过的 14 个 Java 库

转载自 2018年不能错过的 14 个 Java 库下面是整理给你的 2018 年不应该错过的 14 个 Java 库包清单&#xff0c;多多少少大家应该都接触过一些&#xff0c;如果还没听过那就OUT了。GuiceGuice是一个Java 6以上支持依赖注入框架。由谷歌提供。OkHttpHTTP是现代网络的通讯方式。…

Spring MVC Boot Cloud 技术教程汇总

转载自 Spring MVC & Boot & Cloud 技术教程汇总昨天我们发布了Java成神之路上的知识汇总&#xff0c;今天继续。 Java成神之路技术整理&#xff08;长期更新&#xff09; 以下是Java技术栈微信公众号发布的关于 Spring/ Spring MVC/ Spring Boot/ Spring Cloud 的技术…

group by分组、having() 筛选组的用法

【1】选出 除语文学科外&#xff0c;且学科平均分大于60 的每个学科的最高最低分&#xff1b;

Java成神之路技术整理

转载自 Java成神之路技术整理以下是Java技术栈微信公众号发布的所有关于 Java 的技术干货&#xff0c;会从以下几个方面汇总&#xff0c;本文会长期更新。 Java 基础篇Java 集合篇Java 多线程篇Java JVM篇Java 进阶篇Java 新特性篇Java 工具篇Java 书籍篇 Java基础篇 8张图带你…

RFC+JSF术语

RFC 请求注解&#xff08;Request For Comments&#xff09; JSF JavaServer Faces (JSF) is a Java specification for building component-based user interfaces for web applications.

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

转载自 图解 5 种 Join 连接及实战案例&#xff01;&#xff08;inner/ left/ right/ full/ cross&#xff09; Join 连接在日常开发用得比较多&#xff0c;但大家都搞清楚了它们的使用区别吗&#xff1f;&#xff1f;一文带你上车~~ 内连接 inner join 内连接是基于连接谓词…

接口、多态

一.接口 1.接口的定义和使用 接口名&#xff1a;和类名一样&#xff0c;首字母大写 public interface 接口名{//接口中的成员&#xff0c;一般写一些抽象方法 } public class 类名 implements 接口名{//复写接口中所有的抽象方法 } 2.接口的成员热点&#xff1a; &#xff0…

基础笔试编程题(jz)

【1】计算某个单词在某文件中出现的次数. // 计算某个单词在某文件中出现的次数. public class WordCounter {private static int counter;private static String path System.getProperty("user.dir") File.separator "src" File.separator "com…

到底什么是 OAuth 2.0

转载自 到底什么是 OAuth 2.0 ? 一文秒懂&#xff01;- 理解OAuth 2.0OAuth是一个关于授权&#xff08;authorization&#xff09;的开放网络标准&#xff0c;在全世界得到广泛应用&#xff0c;目前的版本是2.0版。本文对OAuth 2.0的设计思路和运行流程&#xff0c;做一个简明…

在eclipse中创建maven项目错误的解决方法:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-qu

当我们在ecipse安装 maven插件后&#xff0c; (how to install maven plugin named m2eclipse) You can install the lastest M2Eclipse release (1.7.0) by using the following update site from within Eclipse: http://download.eclipse.org/technology/m2e/releases 创建…

继承、抽象

继承、抽象 一.继承 1.继承解决的问题&#xff1a;共性抽取 子类中有共性的内容&#xff08;成员变量、成员方法&#xff09;抽取到父类中&#xff0c;子类可以直接使用父类非私有的成员。 2.继承的格式 public cLass 父类{//成员变量、构造方法、成员方法 }public class 子…

JDK 5 ~ 10 新特性倾情整理

转载自 JDK 5 ~ 10 新特性倾情整理最近连 JDK11都在准备发布的路上了&#xff0c;大家都整明白了吗&#xff1f;也许现在大部分人还在用6-8&#xff0c;8的新特性都没用熟&#xff0c;9刚出不久&#xff0c;10-11就不用说了。为了大家对JDK有一个全面的了解&#xff0c;下面我为…

Java 内存模型 JMM 详解

转载自 Java 内存模型 JMM 详解JMM简介 Java Memory Model简称JMM, 是一系列的Java虚拟机平台对开发者提供的多线程环境下的内存可见性、是否可以重排序等问题的无关具体平台的统一的保证。(可能在术语上与Java运行时内存分布有歧义&#xff0c;后者指堆、方法区、线程栈等内存…

多种代码块

代码块 1.概念 代码块其实就是一对{ }&#xff0c;根据其放的位置不同&#xff0c;它的特性也不同 2.分类 &#xff08;1&#xff09;构造代码块 位置&#xff1a;类中方法外 作用&#xff1a;提取构造方法中共性的代码&#xff0c;每次执行构造方法都会执行。 &#xff08;…

spring boot 入门-使用spring boot构建简单应用

目的&#xff1a;建立一个简单的联系人列表&#xff1b; 使用 spring boot maven 进行构建 【0】文件结构如下&#xff1a; 【1】pom.xml 如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.o…