阅读 108

SQL中CASE表达式的使用

SQL中CASE表达式的使用

文章目录

前言

一、CASE表达式概述

二、使用场景和例子

1.有小类的具体数据,统计大类的总的数据情况

2.(列行转换)一条SQL语句进行不同条件的统计

前言

Mysql中CASE表达式的使用,简单介绍下CASE经典的使用场景和例子


一、CASE表达式概述

CASE表达式的基本写法,CASE表达式有简单CASE表达式和搜索CASE表达式2种写法,示例如下:


--简单CASE表达式

CASE sex

  WHEN '1' THEN '男'

  WHEN '2' THEN '女'

ELSE '其他' END


--搜索表达式

CASE WHEN sex = '1' THEN '男'

     WHEN sex = '2' THEN '女'

ELSE '其他' END

1

2

3

4

5

6

7

8

9

10

CASE表达式的注意事项:


统一各分支返回的数据类型

不要忘了写END

养成ELSE子句的习惯

二、使用场景和例子

1.有小类的具体数据,统计大类的总的数据情况

比如:有各市的人口数据,统计各省的总数据


城市 人口数量

杭州市 100

宁波市 80

金华市 50

深圳市 100

广州市 200

上海市 100

需要的数据结果


省份 人口数量

广东省省 300

浙江省 130

上海市市 100

SQL创建语句


CREATE TABLE `city_population` (

  `city_name` varchar(32) NOT NULL DEFAULT '' COMMENT '城市名称',

  `population` int(11) NOT NULL DEFAULT '0' COMMENT '人口数'

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1

2

3

4

SQL查询语句


SELECT

CASE city_name

WHEN '杭州市' THEN '浙江省'

WHEN '宁波市' THEN '浙江省'

WHEN '金华市' THEN '浙江省'

WHEN '深圳市' THEN '广东省'

WHEN '广州市' THEN '广东省'

ELSE'其他'

END  AS province,

SUM(population) AS totalPopulation

FROM

city_population

GROUP BY

CASE city_name

WHEN '杭州市' THEN '浙江省'

WHEN '宁波市' THEN '浙江省'

WHEN '金华市' THEN '浙江省'

WHEN '深圳市' THEN '广东省'

WHEN '广州市' THEN '广东省'

ELSE'其他'

END

ORDER BY totalPopulation DESC

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

2.(列行转换)一条SQL语句进行不同条件的统计

比如:有市的男女人口数据,分别统计男女人数情况


城市 人口数量 性别

杭州市 100

杭州市 80

金华市 50

金华市 100

深圳市 200

深圳市 100

需要的数据结果


城市

杭州市 100 80

金华市 50 100

深圳市 200 100

SQL创建语句


CREATE TABLE `city_population2` (

  `city_name` varchar(32) NOT NULL DEFAULT '' COMMENT '城市名称',

  `population` int(11) NOT NULL DEFAULT '0' COMMENT '人口数',

  `sex` varchar(16) NOT NULL DEFAULT '' COMMENT '性别:1:男,2:女'

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1

2

3

4

5

SQL查询语句


SELECT

city_name,

-- 男性人口

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

city_population2 

GROUP BY

city_name;

————————————————

版权声明:本文为CSDN博主「代码人生121」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/zhj445977480/article/details/116097150


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐