详解SQL之CASE WHEN具体用法

详解SQL之CASE WHEN具体用法

简介

CASE WHEN 是 SQL 中的条件表达式,可以根据不同的条件进行不同的处理,常用于数据转换、分类统计等场景。

通常的形式如下:

CASE WHEN condition1 THEN result1
     WHEN condition2 THEN result2
     ...
     ELSE default_result
END

其中,condition1condition2 等为条件表达式,result1result2 等为满足相应条件时的结果,default_result 为条件都不满足时的默认结果。

示例1:数据转换

假设有一个订单表 orders,其中有一列 status 用于记录订单的状态,取值为 1、2、3 三个数字,分别代表“待支付”、“已支付”、“已完成”三种状态。现在需要将其转换为文字描述,即将 1 转换成“待支付”,2 转换成“已支付”,3 转换成“已完成”。

SELECT id, 
       CASE 
           WHEN status = 1 THEN '待支付'
           WHEN status = 2 THEN '已支付'
           WHEN status = 3 THEN '已完成'
           ELSE '未知状态'
       END AS status_desc
FROM orders

上述 SQL 语句中,通过 CASE WHEN 表达式判断 status 值,根据不同的取值转换为对应的文字描述。当 status 值既不是 1、2、3 中的任何一个时,使用 ELSE 子句指定为“未知状态”。

示例2:分类统计

假设有一个学生表 students,其中有两列 genderscore,分别用于记录学生的性别和分数。现在需要按照不同的性别统计男生和女生的个数,并将总分数和平均分分别计算出来。

SELECT gender, 
       COUNT(*) AS count, 
       SUM(score) AS sum_score,
       AVG(score) AS avg_score
FROM students
GROUP BY gender

上述 SQL 语句中,通过 COUNTSUMAVG 等聚合函数对学生表进行统计。但是,如果需要将男生和女生分别统计,可以使用 CASE WHEN 表达式进行分类处理。

SELECT CASE gender 
           WHEN 'M' THEN '男'
           WHEN 'F' THEN '女'
           ELSE '未知性别'
       END AS gender_desc,
       COUNT(*) AS count, 
       SUM(score) AS sum_score,
       AVG(score) AS avg_score
FROM students
GROUP BY gender_desc

上述 SQL 语句中,对 gender 列进行了转换,将 'M' 转换成了 '男',将 'F' 转换成了 '女',同时还使用了 GROUP BY 子句按照分类后的 gender_desc 进行分组统计。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解SQL之CASE WHEN具体用法 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • redis 主从备份及其主备切换的操作

    Redis是一种高性能的key-value存储系统,可以用于缓存、队列、排名榜等不同场景。Redis主从备份则是指将Redis的数据在多台机器之间进行备份和同步,从而提高数据的可用性和安全性。 以下是Redis主从备份及其主备切换的完整攻略: 1. 配置Redis主从复制 Redis主从复制的原理是将主节点上的数据异步地复制到一个或多个从节点中,从节点只能读…

    database 2023年5月22日
    00
  • mysql自定义排序顺序语句

    当我们在ORDER BY语句中使用数字或者字母排序时,是按照默认的顺序进行排列的。但是有时候我们需要按照自定义的顺序进行排序,这时候我们需要用到mysql自定义排序顺序语句。 定义自定义排序顺序 在实际开发中,我们可能遇到想要按照自定义的顺序进行排序的需求。比如,我们想要按照“优秀”、“良好”、“及格”、“不及格”这样的顺序对学生进行排序。这时候我们就需要定…

    database 2023年5月22日
    00
  • 希望这些问题和答案能对您有所帮助!

    以下是关于“希望这些问题和答案能对您有所帮助!”的完整使用攻略,包括理解问题和提供有用的信息。提供了两个示例以便更好地理解如何回答用户的问题。 步骤1:理解问题 在回答问题之前,我们需要理解用户的问题。在这种情况下,用户希望知道这些问题和答案是否对他们有所帮助。因此,我们需要提供一些用的信息,以帮助用户决定是否需要进一步了解这些问题和答案。 步骤2:提供有用…

    python 2023年5月12日
    00
  • MySql中的存储引擎和索引

    MySQL中的存储引擎和索引是提高MySQL数据库性能的关键因素之一。以下是MySQL存储引擎和索引的完整攻略。 一、存储引擎 存储引擎是MySQL中负责数据存储和读写的底层组件。MySQL支持多种存储引擎,不同的存储引擎具有不同的特点和适用场景。下面介绍几种常见的存储引擎: 1. InnoDB InnoDB是MySQL默认的事务性存储引擎,支持事务和行锁定…

    database 2023年5月19日
    00
  • 解读mysql datetime类型精确到毫秒、微秒的问题

    下面是关于解读MySQL datetime类型精确到毫秒、微秒的问题的完整攻略。 1. 什么是MySQL datetime类型? MySQL datetime类型是用来存储日期和时间的数据类型,它可以存储的日期和时间的范围为:’1000-01-01 00:00:00′ 到 ‘9999-12-31 23:59:59’。 datetime类型的格式是:’YYYY…

    database 2023年5月22日
    00
  • oracle 10g 精简版安装步骤分享

    Oracle 10g 精简版安装步骤分享 1. 前言 Oracle是一款非常强大的数据库软件,提供了完整的企业级数据库管理解决方案。但是Oracle的安装通常的流程比较繁琐,常常需要配置多项参数,而且安装包非常大,对于有些项目和学习环境而言,精简版的Oracle已经足够使用。本教程将介绍Oracle 10g 精简版的安装步骤和常用设置,希望对初学者有所帮助。…

    database 2023年5月21日
    00
  • MySQL中explain语句的基本使用教程

    当我们在MySQL执行一条SQL语句的时候,可能会遇到很多问题。这时候我们可以使用EXPLAIN语句来分析我们的SQL语句在执行过程中的各种情况,帮助我们更好地理解SQL执行过程以及优化SQL效率。 什么是EXPLAIN语句 EXPLAIN语句是MySQL提供的一种工具,可以输出一个SQL语句在执行过程中所使用的索引、表的读取顺序、过滤条件以及 joins(…

    database 2023年5月22日
    00
  • Centos7 Redis主从搭建配置的实现

    下面是CentOS 7上 Redis主从搭建配置的实现攻略。 准备工作 1.安装必要的依赖 在终端中执行以下命令,安装需要的依赖: yum install gcc gcc-c++ kernel-devel 2.下载并安装Redis 在官网 https://redis.io/download 中下载最新版本的Redis,然后执行以下命令进行安装: tar xz…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部