mysql: case when

mysql: case when

1.简单函数

1. 枚举值替换

将字段的指定值替换为新值,需要枚举所有字段值
用法: case column_name when value1 then new_value1 else new_value2 end alias_name
eg: 将表中性别字段的枚举值替换为男,女

SELECT NAME,
CASE sex
    WHEN 1 THEN
    '男'
    WHEN 0 THEN
    '女' ELSE '未知'
    END sex
FROM student;

2. 搜索函数

将符合条件的数据替换为指定值

1. 字段替换为指定值

用法: case when expr1 then new_value1 when expr2 then new_value2 else new_value3 end alias_name
eg: 将age字段的数字替换小孩,青年,中年,老年

SELECT NAME,
CASE
    WHEN age < 20 THEN
    '&#x5C0F;&#x5B69;'
    WHEN age < 30 THEN
    '&#x9752;&#x5E74;'
    WHEN age < 50 THEN
    '&#x4E2D;&#x5E74;' ELSE '&#x8001;&#x5E74;'
    END age FROM student;

2. 聚合指定字段

这种场景下一般配合group by使用, 对记录进行分组后, 对每组数据的特定记录进行求和或者计数
如果没有group by ,简单查询可以直接通过where进行过滤

1. 联合sum求和

对符合条件的记录的某个字段进行求和操作
eg: 计算每个城市男性的年龄总和,先判断sex是否等于1, 等于的时候累加age字段

SELECT
    city,sum( CASE WHEN sex = 1 THEN age ELSE NULL END ) totalAge
FROM
    student
GROUP BY
    city;

2. 联合count计数

对符合条件的记录的记录进行计数操作
eg: 计算每个城市男性总数,先判断sex是否等于1, 等于的时候累计这条记录

SELECT
    city,count( CASE WHEN sex = 1 THEN sex ELSE NULL END ) totalNum
FROM
    student
GROUP BY
    city;

sum关键字通过替换值为1进行累加也能进行计数

SELECT
    city,sum( CASE WHEN sex = 1 THEN 1 ELSE 0 END ) totalNum
FROM
    student
GROUP BY
    city;

Original: https://www.cnblogs.com/virgosnail/p/16051589.html
Author: 隐官陈十一
Title: mysql: case when

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/8309/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部