MySQL基础入门之Case语句用法实例


当前第2页 返回上一页

带有 SELECT 查询的 CASE 语句

SELECT StudentName, State, City FROM Students ORDER BY (
CASE
WHEN State IS NULL THEN City
ELSE State
END);

具有聚合函数的 CASE 语句

我们将使用 CASE 语句和 SUM() MySQL 函数按订单状态从 Orders 表中计算总销售额。

创建数据库表

CREATE TABLE Orders (OrderID int,SalesID int, OrderStatus varchar(255) );

插入数据

INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('10', '001', 'Shipped');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('11', '002', 'Shipped');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('12', '003', 'Not Developed');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('13', '004', 'Success');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('14', '005', 'In Process');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('15', '006', 'Cancelled');

SELECT 语句显示表数据

SELECT * FROM Orders;

得到的数据如下:

10    1    Shipped
11    2    Shipped
12    3    Not Developed
13    4    Success
14    5    In Process
15    6    Cancelled

在 SQL SELECT 查询中使用 SUM() 和 COUNT 作为聚合函数的 CASE 语句

SELECT
SUM(CASE
WHEN OrderStatus = 'Success' THEN 1
ELSE 0
END) AS 'Success Count',
SUM(CASE
WHEN OrderStatus = 'On Hold' THEN 1
ELSE 0
END) AS 'Hold Count',
SUM(CASE
WHEN OrderStatus = 'In Process' THEN 1
ELSE 0
END) AS 'Processing',
SUM(CASE
WHEN OrderStatus = 'Shipped' THEN 1
ELSE 0
END) AS 'Shipping count',
SUM(CASE
WHEN OrderStatus = 'Cancelled' THEN 1
ELSE 0
END) AS 'Cancellation Count',
SUM(CASE
WHEN OrderStatus = 'Not Developed' THEN 1
ELSE 0
END) AS 'Not Developed count',
COUNT(*) AS 'Sum Total'
FROM
Orders;

运行结果:

补充:case行转列用法

现有表数据如下图所示(性别列中,1表示男,2表示女):

需统计各年级男女人数。虽然表中数据已有各年级的男女人数,但是还是不够一目了然。接下来使用case语句查询如下:

SELECT
    class,
    sum( CASE WHEN sex = '1' THEN population ELSE 0 END ) AS cnt_m,
    sum( CASE WHEN sex = '2' THEN population ELSE 0 END ) AS cnt_f 
FROM
    `school_test` 
GROUP BY
    class;

结果如下:

这是最经典的case行转列用法。

总结

MySQL CASE 语句允许对 SQL 查询执行 IF ELSE 逻辑,以检查条件语句并从数据库表中获取所需的结果集或值。

我们只能将 CASE 语句与存储过程、存储事件、函数和触发器一起使用。它用于将条件表达式与一系列不同的值进行比较,这些值提供了相应的结果,该结果包含取决于查询中使用的上下文的数据类型。

因此,我们可以说 MySQL 中的 CASE 语句使查询代码更加高效和可读。

到此这篇关于MySQL基础入门之Case语句用法的文章就介绍到这了,更多相关MySQL Case语句用法内容请搜索

参看文章:

MySQL CASE Statement

更多相关Mysql内容来自木庄网络博客


标签:Mysql

返回前面的内容

相关阅读 >>

如何修改mysql 配置文件数据的存储路径

mysql row_number()与over()函数用法详解

mysql日期和时间函数有哪些?

mysql 建立分区的两种方式介绍(代码示例)

mysql连接查询实例详解

mysql5.x版本乱码问题解决方案

从零开始搭建mysql mmm架构

centos下mysql安装图文教程

mysql学习第五天 mysql数据库基本操作

mysql数据插入效率比较

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...