SQL进阶:CASE表达式
目录
1、用一条SQL语句进行不同条件的统计
建表语句(MySQL8):
录入数据:
*按性别统计SQL
输出结果(行列转换)
2、在UPDATE语句里进行条件分支
建表语句(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