SQL语法 case when语句用法讲解

CASE WHEN解释


SQL中的CASE WHEN语句是一种条件表达式,它允许你根据不同的情况返回不同的值。CASE WHEN通常用于SELECT语句中,用于创建新的列,该列的值取决于其他列的值。CASE WHEN可以用于任何可以使用表达式的地方。

大致概述:

case when 条件1 then 结果1 else 结果2 end

如何满足条件1 就选取结果1做结果,否则结果2,结束

case 
when 条件1 then 结果1
when 条件2 then 结果2  
when 条件3 then 结果3 else 结果4 end

判断是否满足条件1,满足选取 结果1,
否则继续判断是否满足条件2,满足选取 结果2,
否则继续判断是否满足条件3,满足选取 结果3,否则选用结果4,
结果4 相当与 一个默认值,如果不满足条件1、2、3,就用默认值

CASE WHEN有两种主要形式:

  1. 简单Case表达式
  2. 搜索Case表达式

简单Case表达式

SELECT column_name,CASE input_columnWHEN value1 THEN result1WHEN value2 THEN result2...ELSE default_resultEND AS alias_name
FROM table_name;

搜索Case表达式

SELECT column_name,CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE default_resultEND AS alias_name
FROM table_name;

示例1:

假设有一个学生成绩表student_scores,包含字段namescore,我们想根据分数给学生划分等级:

  • 分数大于等于90为A级
  • 分数大于等于80为B级
  • 分数大于等于70为C级
  • 分数大于等于60为D级
  • 其他为E级
    使用CASE WHEN的SQL语句如下:
SELECT name,score,CASEWHEN score >= 90 THEN 'A级'WHEN score >= 80 THEN 'B级'WHEN score >= 70 THEN 'C级'WHEN score >= 60 THEN 'D级'ELSE 'E级'END AS grade
FROM student_scores;

这个查询会返回每个学生的名字、分数和对应的等级。如果score字段的值满足某个WHEN子句中的条件,CASE表达式就会返回那个THEN子句中的值。如果都不满足,则返回ELSE子句中的值。如果省略了ELSE子句,并且没有任何WHEN子句为真,结果将为NULL

示例2:

这里有两个表,一个学生表student,一个学生成绩表score
student:
在这里插入图片描述
score:
在这里插入图片描述
我们根据每一位学生成绩的总分的来判断是优、良、差,并按照总成绩排序

select a.Student_ID,a.name,b.sumgrade as "总成绩",CASE WHEN b.sumgrade >= 160 THEN '优'WHEN b.sumgrade < 160 and b.sumgrade >= 140 THEN '良'WHEN b.sumgrade < 140 and b.sumgrade >= 120 THEN '及格'ELSE '差' END as '评级'
from student a
left join (select Student_ID,sum(grade) sumgrade from score GROUP BY Student_ID) b on a.Student_ID = b.Student_ID 
ORDER BY b.sumgrade DESC

结果:
在这里插入图片描述

题主学习记录,大家多多包涵。

在这里插入图片描述

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

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

相关文章

二叉树和数据结构

小红的完全二叉树构造 题目描述 小红想构造一个总共 n 个节点完全二叉树&#xff0c;该二叉树满足以下两个性质&#xff1a; 1. 所有节点的权值值为 1 ~ n 的一个排列。 2. 除了根节点以外&#xff0c;每个节点的权值和它父亲的权值的乘积为偶数。 请你帮小红构造出这个二叉树…

K8S一 k8s基础知识及实战

一 K8S 概览 1.1 K8S 是什么&#xff1f; K8S官网文档&#xff1a;https://kubernetes.io/zh/docs/home/ K8S 是Kubernetes的全称&#xff0c;源于希腊语&#xff0c;意为“舵手”或“飞行员”&#xff0c;官方称其是&#xff1a;用于自动部署、扩展和管理“容器化&#xff08…

软考 系统架构设计师系列知识点之大数据设计理论与实践(5)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之大数据设计理论与实践&#xff08;4&#xff09; 所属章节&#xff1a; 第19章. 大数据架构设计理论与实践 第3节 Lambda架构 19.3.1 Lambda架构对大数据处理系统的理解 Lambda架构由Storm的作者Nathan Marz提出&…

伺服系统中电机磁极偏角自学习的实现方案

一、 电机磁极偏角自学习原理简述 要知道磁极偏角&#xff0c;首先要明确的是磁极角&#xff0c;在我个人的理解里磁极角就是park和Ipark变换里所需的电角度&#xff0c;我们的矢量控制方法是定磁链的&#xff0c;就是要保证两相同步旋转坐标系的Id轴和三相静止坐标系的A轴要重…

45---M.2 SSD电路设计

视频链接 M.2 SSD硬件电路设计01_哔哩哔哩_bilibili M.2 SSD电路设计 1、M.2简介 1.1、M.2基本介绍 M.2接口也叫NGFF&#xff0c;英文全称Next Generation Form Factor。M.2接口是为超极本&#xff08;Ultrabook&#xff09;量身定做的新一代接口标准&#xff0c;是Intel推…

Java实现二叉树(下)

1.前言 http://t.csdnimg.cn/lO4S7 在前文我们已经简单的讲解了二叉树的基本概念&#xff0c;本文将讲解具体的实现 2.基本功能的实现 2.1获取树中节点个数 public int size(TreeNode root){if(rootnull){return 0;}int retsize(root.left)size(root.right)1;return ret;}p…

314_C++_QT表格的撤销、恢复,可对多行、多item进行撤销、恢复操作

行–删除后的,撤销、恢复图示: 原图示 删除后 撤销操作 恢复操作 item修改后的撤销、恢复 原item 撤销修改 恢复修改 代码: --</

[开发日志系列]PDF图书在线系统20240415

20240414 Step1: 创建基础vueelment项目框架[耗时: 1h25min(8:45-10:10)] 检查node > 升级至最新 (考虑到时间问题,没有使用npm命令行执行,而是觉得删除重新下载最新版本) > > 配置vue3框架 ​ 取名:Online PDF Book System 遇到的报错: 第一报错: npm ERR! …

实时避障系统开启盲人独立出行新时代

作为一名资深记者&#xff0c;我始终关注并报道科技如何助力特殊群体克服生活挑战的创新实践。近期&#xff0c;我有幸深入了解了一款专为盲人设计的辅助应用叫做蝙蝠避障&#xff0c;它以实时避障系统为核心&#xff0c;为视障人士独自出行提供了强有力的支持&#xff0c;悄然…

服务器挖矿病毒解决ponscan,定时任务解决

服务器挖矿病毒解决ponscan&#xff0c;定时任务解决 挖矿病毒会隐藏chattr的操作权限&#xff0c;让我们无法删除病毒文件&#xff0c;杀掉病毒进程。所以要去下载chattr.c的文件&#xff0c;编译成a.out。然后再对原来的chattr文件的权限进行修改。然后覆盖掉它。 chattr.c …

JavaFX制作login页面

JavaFx制作简单的login页面demo public class LoginFxDemo extends Application {public static void main(String[] args) {Application.launch(args);}Overridepublic void start(Stage primaryStage) throws Exception {Label nLabel new Label("姓名:");nLabel.…

编曲知识19:自动化处理 发送原理 混响 延迟

自动化处理 发送原理 混响 延迟小鹅通-专注内容付费的技术服务商https://app8epdhy0u9502.pc.xiaoe-tech.com/live_pc/l_661a68eae4b023c0a96a8b36?course_id=course_2XLKtQnQx9GrQHac7OPmHD9tqbv 自动化处理 自动化 鼠标挪动到轨道左下角打开自动化轨道 或右键轨道-左键单击…

Softmax函数和Sigmoid函数的思考

【为什么 Softmax 函数面对二分类问题时可以简化为 Sigmoid 函数】 将二分类问题当成普通多分类问题&#xff0c;神经网络如下所示&#xff1a; 因为有两个分类&#xff0c;所以需要有两个输出&#xff0c;然后经过 Softmax 后得到每个分类的预测概率。 假设第一个分类的得分…

SpringBoot 日志系统解析

日志实现框架 常见框架: JULLogbacLog4jLog4j2 日志实现的抽象层 避免代码的改动影响用户的使用, 常见的: JCLSLF4J 日志发展历程 JDK1.3及以前, 通过System.(out | err).println打印, 存在巨大缺陷解决系统打印缺陷问题出现log4,2015年8月停止更新受到log4j影响, SUN公…

linux文件访问权限理解

目录 一&#xff0c;涉及指令: 二&#xff0c;权限的表示 三&#xff0c;权限命令使用 一&#xff0c;涉及指令: umask chmod chown/chgrp 二&#xff0c;权限的表示 rwx rwx r-x含义: 访问方式: r-可读;w-可写&#xff1b;x-可执行&#xff1b; 访问用户:u-所有者;…

css 实现排行榜向上滚动

使用动画实现无线向上滚动 复制一层dom&#xff0c;使用动画向上滚动&#xff0c;鼠标hover的时候暂停动画 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthd…

02 | 事件驱动框架(Get/Set)

02 | 事件驱动框架&#xff08;Get/Set&#xff09; 【程序员的末路诗】01 aeEventLoop数据结构1&#xff09;aeEventLoop2&#xff09;aeFileEvent3&#xff09;aeTimeEvent 02 epoll 实例创建&#xff08;epoll_create&#xff09;1&#xff09;创建eventLoop结构体2&#xf…

香港科技大学广州|智能制造学域博士招生宣讲会—广州大学城专场

香港科技大学广州&#xff5c;智能制造学域博士招生宣讲会—广州大学城专场 时间&#xff1a;2024年4月18日&#xff08;星期四&#xff09;14:30 地点&#xff1a;广州市大学城雅乐轩酒店二楼策略2厅&#xff08;地铁大学城南站C口&#xff09; 报名链接&#xff1a;https:/…

记录西门子:增量编码器使用

编码器功能实现&#xff1a; 1、显示角度0~360 2、显示编码器速度 3、掉电保持当前角度 4、一键定位功能---改变当前角度为180 5、通过Z相不断纠偏角度 实物编码器&#xff1a; 接线图&#xff1a; 接到PLC的高速计数点位 方案一&#xff1a;200-Smart 方案二&#xff1a;1…

AI大模型探索之路-提升篇2:一文掌握AI大模型的核心-注意力机制

目录 前言 一、注意力机制简介 二、注意力机制的工作原理 三、注意力机制的变体 1、自注意力&#xff08;Self-Attention&#xff09; 2、双向注意力&#xff08;Bidirectional Attention&#xff09; 3、多头注意力&#xff08;Multi-Head Attention&#xff09; ​4、…