SQL进阶:CASE表达式

目录

1、用一条SQL语句进行不同条件的统计

建表语句(MySQL8):

录入数据: 

*按性别统计SQL

输出结果(行列转换)

2、在UPDATE语句里进行条件分支

建表语句(MySQL8):

录入数据:

要求:

按要求编写SQL:

输出结果:

3、课程表行列转换 

建表语句(MySQL8)

录入数据:

要求:

SQL:

输出结果


1、用一条SQL语句进行不同条件的统计

建表语句(MySQL8):
CREATE TABLE `city_population` (
	`city` VARCHAR(50) NULL DEFAULT NULL COMMENT '城市' COLLATE 'utf8mb4_0900_ai_ci',
	`sex` TINYINT(3) NULL DEFAULT NULL COMMENT '性别',
	`population` INT(10) NULL DEFAULT NULL COMMENT '人口(万)'
)
COMMENT='城市人口表'
COLLATE='utf8mb4_0900_ai_ci'
ENGINE=InnoDB
;
录入数据: 

*按性别统计SQL
SELECT 
city,
SUM(case when sex = 1 then population ELSE 0 END) AS 男,
SUM(case when sex = 2 then population ELSE 0 END) AS 女
FROM city_population 
GROUP BY city  
输出结果(行列转换)

2、在UPDATE语句里进行条件分支

建表语句(MySQL8):
CREATE TABLE `people_salary` (
	`name` VARCHAR(50) NULL DEFAULT NULL COMMENT '员工' COLLATE 'utf8mb4_0900_ai_ci',
	`salary` INT(10) NULL DEFAULT NULL COMMENT '薪资'
)
COMMENT='员工薪资表'
COLLATE='utf8mb4_0900_ai_ci'
ENGINE=InnoDB
;
录入数据:

要求:

对工资30000以上(含)的员工降薪10%

对工资28000以下的员工加薪20%

按要求编写SQL:
UPDATE people_salary 
SET 
salary = case 
when salary >= 30000
then salary * 0.9
when salary <= 28000
then salary * 1.2
ELSE salary END 
输出结果:

3、课程表行列转换 

建表语句(MySQL8)
CREATE TABLE `courses` (
	`name` VARCHAR(50) NULL DEFAULT NULL COMMENT '姓名' COLLATE 'utf8mb4_0900_ai_ci',
	`course` VARCHAR(50) NULL DEFAULT NULL COMMENT '课程' COLLATE 'utf8mb4_0900_ai_ci'
)
COMMENT='课程表'
COLLATE='utf8mb4_0900_ai_ci'
ENGINE=InnoDB
;
录入数据:

要求:

展示学生的课程选择信息。

SQL:
SELECT NAME,case when SUM(case when course = 'SQL入门' then 1 ELSE NULL END ) = 1 then 'O' ELSE NULL END AS 'SQL入门',
case when SUM(case when course = 'UNIX基础' then 1 ELSE NULL END ) = 1 then 'O' ELSE NULL END AS 'UNIX基础',
case when SUM(case when course = 'Java中级' then 1 ELSE NULL END ) = 1 then 'O' ELSE NULL END AS 'Java中级'
FROM courses
GROUP BY NAME;
输出结果(行列转换)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值