SQL之case when

Posted gethope5

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL之case when相关的知识,希望对你有一定的参考价值。

大致学习了下SQL的功能语句,case when 类似于c语言中的switich case语句,多分支选择,不同的值可以有不同的返回量。比如,在一个包含了sex字段的表中,可能的值为1、2,执行完下属语句后,值为1的地方返回 男,值为2的地方返回 女。

--简单Case函数
CASE sex
         WHEN ‘1‘ THEN ‘男‘
         WHEN ‘2‘ THEN ‘女‘
ELSE ‘其他‘ END
--Case搜索函数
CASE WHEN sex = ‘1‘ THEN ‘男‘
         WHEN sex = ‘2‘ THEN ‘女‘
ELSE ‘其他‘ END

同时,case语句有两种实现方式。有如下表格: 

国家(country) 人口(population)
中国 600
美国 100
加拿大 100
英国 200
法国 300
日本 250
德国 200
墨西哥 50
印度 250
现在要统计各大洲包含的人数,可利用如下语句实现:
SELECT  SUM(population),
        CASE country
                WHEN ‘中国‘     THEN ‘亚洲‘
                WHEN ‘印度‘     THEN ‘亚洲‘
                WHEN ‘日本‘     THEN ‘亚洲‘
                WHEN ‘美国‘     THEN ‘北美洲‘
                WHEN ‘加拿大‘  THEN ‘北美洲‘
                WHEN ‘墨西哥‘  THEN ‘北美洲‘
        ELSE ‘其他‘ END
FROM    Table_A
GROUP BY CASE country
                WHEN ‘中国‘     THEN ‘亚洲‘
                WHEN ‘印度‘     THEN ‘亚洲‘
                WHEN ‘日本‘     THEN ‘亚洲‘
                WHEN ‘美国‘     THEN ‘北美洲‘
                WHEN ‘加拿大‘  THEN ‘北美洲‘
                WHEN ‘墨西哥‘  THEN ‘北美洲‘
        ELSE ‘其他‘ END;

在sqliteman中对sqlite数据表格的测试代码及结果如下所示:

技术分享图片

技术分享图片

同样,还可以用该方法判别各大洲国家的个数,代码及结果如下:

 

 

此处,sum(perosn)对各大洲国家所对应的人数值进行求和,返回数值列的总数(总额);count(perosn)对各大洲的国家数进行统计,返回匹配指定条件的行数。

以上资料部分参考自:https://www.cnblogs.com/prefect/p/5746624.html

以上是关于SQL之case when的主要内容,如果未能解决你的问题,请参考以下文章

SQL之case when then用法

SQL之case when

SQL之case when then用法(用于分类统计)

SQL之case when then用法(用于分类统计)

case when 使用

sql语句之case when null 解决方法