Mysql 中的case-when

什么是 case-when

case-when 是一种 sql 语句中的语法结构,结构如下:

case 字段名

when 值 then 字段名|值

...

else 字段名|值 end

case when 主要用于数据的 行列转换(把一列数据转换为多列)

前置条件:

-- 表结构 如下:

create table demo2

(

country varchar(20),-- 国家

sex int,-- 性别,男=1,女=2

pop int**--** 人口数量

);

-- 表数据 如下:

insert into demo2 values('中国',1,340);

insert into demo2 values('中国',2,240);

insert into demo2 values('美国',1,45);

insert into demo2 values('美国',2,55);

insert into demo2 values('加拿大',1,40);

insert into demo2 values('加拿大',2,65);

insert into demo2 values('英国',1,34);

insert into demo2 values('英国',2,60);

commit;

编写查询实现如下效果:

效果1:

答案1:

SELECT

d.country ,

SUM(CASE d.sex

WHEN 1 THEN d.pop

ELSE 0 END) AS man ,

SUM(CASE d.sex

WHEN 2 THEN d.pop

ELSE 0 END) AS woman

FROM demo2 d GROUP BY d.country ;

效果2:

答案2:

SELECT

CASE d.country

WHEN '中国' THEN '亚洲'

WHEN '英国' THEN '欧洲'

ELSE '美洲' END AS 洲 ,

SUM(d.pop)

FROM demo2 d

GROUP BY (

CASE d.country

WHEN '中国' THEN '亚洲'

WHEN '英国' THEN '欧洲'

ELSE '美洲' END

) ;

相关推荐
哦虎!11 分钟前
【数据库】事务
java·数据库·mysql
倔强的石头_32 分钟前
时序数据库的难题不只在写入速度
数据库
IT古董2 小时前
【WMS学习笔记系列】01-需求分析
大数据·数据库
zlinear数据采集卡2 小时前
数据采集卡从入门到精通(9):分辨率与精度——16位卡不等于1/65536的精度
开发语言·数据库·fpga开发·开源·c#
Mico183 小时前
麒麟v10-MySQL InnoDB Cluster 完整部署与全场景验证(从入门到精通)
数据库·mysql
杨云龙UP3 小时前
生产环境MySQL多实例XtraBackup全量备份与rsync异地自动传输实践
linux·运维·数据库·mysql·xtrabackup·主从复制·备份恢复
熊文豪3 小时前
SQLServer数据迁移之后,那张报表还能不能秒出
数据库·sqlserver·电科金仓
JosieBook3 小时前
【数据库】把数据优势转化为决策优势:TimechoAI时序大模型使用解析
数据库
会编程的吕洞宾4 小时前
MySQL 慢查询从5秒到50毫秒:索引失效六大场景定位与实战调优
数据库·mysql