SQL中的case when then else end用法

一:简单用法:

1.第一种写法:

SELECT
    s.s_id,
    s.s_name,
    s.s_sex,
    CASE
WHEN s.s_sex = '1' THEN '男'
WHEN s.s_sex = '2' THEN '女'
ELSE '其他'
END as sex,
 s.s_age,
 s.class_id
FROM
    t_b_student s
WHERE
    1 = 1

2.第二种写法

SELECT
    s.s_id,
    s.s_name,
    s.s_sex,
    CASE s.s_sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他'
END as sex,
 s.s_age,
 s.class_id
FROM
    t_b_student s
WHERE
    1 = 1

两个运行结果一样:

有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略
  在这里插入图片描述
二:分组

表数据:

t_b_population
在这里插入图片描述
sql语句:

SELECT country,
    SUM(CASE WHEN p.sex = '1' THEN p.population ELSE 0 END) AS '男',
    SUM(CASE WHEN p.sex = '2' THEN p.population ELSE 0 END) AS '女'
FROM
    t_b_population p
GROUP BY country;

运行结果:
在这里插入图片描述
表数据:

t_b_country
在这里插入图片描述
sql语句:

SELECT
    SUM(c.population) AS '人口',
    CASE c.country
        WHEN '中国'   THEN '亚洲'
        WHEN '印度'   THEN '亚洲'
        WHEN '日本'   THEN '亚洲'
        WHEN '美国'   THEN '北美洲'
        WHEN '加拿大' THEN '北美洲'
        WHEN '墨西哥' THEN '北美洲'
 ELSE '其他' END AS '洲'
FROM
    t_b_country c
GROUP BY CASE c.country
        WHEN '中国'   THEN '亚洲'
        WHEN '印度'   THEN '亚洲'
        WHEN '日本'   THEN '亚洲'
        WHEN '美国'   THEN '北美洲'
        WHEN '加拿大' THEN '北美洲'
        WHEN '墨西哥' THEN '北美洲'
 ELSE '其他' END;

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值