mysql 中 case when 的使用

2018-12-28  本文已影响0人  Aiibai
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  SEX
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
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;
上一篇 下一篇

猜你喜欢

热点阅读