CASE WHEN

测试表student:

sno   sname    ssex  sage  sdept
95001 张三         男    17     CS
95002 李四         女    19     IS
95003 王五         男    22     MA
95004 李四         男    20      IS

简单case

SELECT
    (
        CASE ssex
            WHEN '男'
            THEN 1
            WHEN '女'
            THEN 2
            ELSE '其他'
        END)'性别'
FROM
    student

搜索case

SELECT
    (
        CASE
            WHEN ssex = '男'
            THEN 1
            WHEN ssex ='女'
            THEN 2
            ELSE '其他'
        END)'性别'
FROM
    student

1.和group by配合使用

计算男女的年龄和
SELECT
    (
        CASE
            WHEN ssex = '男'
            THEN '男的'
            WHEN ssex ='女'
            THEN '女的'
            ELSE '其他'
        END)'性别',
    SUM(sage)
FROM
    student
GROUP BY
    (
        CASE
            WHEN ssex = '男'
            THEN '男的'
            WHEN ssex ='女'
            THEN '女的'
            ELSE '其他'
        END)
女的 19
男的 59

统计各个年龄段数量
SELECT
    (
        CASE
            WHEN sage <18
            THEN '小朋宇'
            WHEN sage <20
            THEN '骚年'
            ELSE '青年'
        END)'年龄段',
    COUNT(*) '数量'
FROM
    student
GROUP BY
    (
        CASE
            WHEN sage <18
            THEN '小朋宇'
            WHEN sage <20
            THEN '骚年'
            ELSE '青年'
        END)
年龄段    数量
小朋宇      1
青年         2
骚年         1

2.和汇总函数配合使用
统计男女数量
select count(case when ssex = '男' then 1 else 0 end) '男生数',
        count(case when ssex = '女' then 1 else 0 end) '女生数'
from student
男生数   女生数
3       1

或者:
select sum(case  when ssex='男' then 1 else 0 end) '男生数',
        sum(case  when ssex='女' then 1 else 0 end) '女生数'
统计男女年龄和
select sum(case  when ssex='男' then sage else 0 end) '男子年龄和',
        sum(case  when ssex='女' then sage else 0 end) '女子年龄和'
from student
男子年龄和    女子年龄和
59                   19

3.UPDATE
交换性别
UPDATE
    student
SET
    ssex = (
        CASE
            WHEN ssex='男'
            THEN '女'
            WHEN ssex='女'
            THEN '男'
            ELSE ssex
        END)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值