1. 准备表以及数据
CREATE TABLE country_population
(
id INT NOT NULL AUTO_INCREMENT,
country VARCHAR(255) NOT NULL,
population BIGINT DEFAULT 0 ,
PRIMARY KEY(id)
)ENGINE=INNODB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
INSERT INTO country_population(`country`,`population`) VALUES('中国',600);
INSERT INTO country_population(`country`,`population`) VALUES('美国',100);
INSERT INTO country_population(`country`,`population`) VALUES('加拿大',100);
INSERT INTO country_population(`country`,`population`) VALUES('英国',200);
INSERT INTO country_population(`country`,`population`) VALUES('法国',300);
INSERT INTO country_population(`country`,`population`) VALUES('日本',250);
INSERT INTO country_population(`country`,`population`) VALUES('德国',200);
INSERT INTO country_population(`country`,`population`) VALUES('墨西哥',50);
INSERT INTO country_population(`country`,`population`) VALUES('印度',250);
2. case when 的两种形式
- 简单
Case
函数
CASE SEX
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
-
Case
搜索函数
CASE WHEN SEX = '1' THEN '男'
WHEN SEX = '2' THEN '女'
ELSE '其他' END
这两种方式有什么区别呢?
Case
搜索函数的When
可以有表达式。
3.问题
image.png(1).统计亚洲和北美洲的人口数量。
SELECT CASE WHEN country = '中国' THEN '亚洲'
WHEN country = '印度' THEN '亚洲'
WHEN country = '日本' THEN '亚洲'
WHEN country = '美国' THEN '北美洲'
WHEN country = '加拿大' THEN '北美洲'
WHEN country = '墨西哥' THEN '北美洲'
ELSE '其他' END state,
SUM(population)
FROM country_population
GROUP BY
CASE WHEN country = '中国' THEN '亚洲'
WHEN country = '印度' THEN '亚洲'
WHEN country = '日本' THEN '亚洲'
WHEN country = '美国' THEN '北美洲'
WHEN country = '加拿大' THEN '北美洲'
WHEN country = '墨西哥' THEN '北美洲'
ELSE '其他' END;
网友评论