美文网首页
mysql 中 case when 的使用

mysql 中 case when 的使用

作者: Aiibai | 来源:发表于2018-12-28 11:44 被阅读0次
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;

相关文章

网友评论

      本文标题:mysql 中 case when 的使用

      本文链接:https://www.haomeiwen.com/subject/picslqtx.html