目录

1.case when函数的语法和用法

(1)语法:case when...then...else...end

①简单语法(两个条件):case when (criteria1) then (name1) else (name2 )end

②多条件:case when (criteria1) then (name1)else (criteria2) then (name2)...[else (criteria i) then (name i)] ...else(name n )end

(2)用法:对某目标字段按条件进行分组

2.实例

(1)两个条件判断分组。

(2)多条件判断分组。


1.case when函数的语法和用法

(1)语法:case when...then...else...end

①简单语法(两个条件):case when (criteria1) then (name1) else (name2 )end

即case when (条件1) then (命名1) else (命名2 )end

②多条件:case when (criteria1) then (name1)else (criteria2) then (name2)...[else (criteria i) then (name i)] ...else(name n )end

参数说明

criteria1:必需,分组的条件1,可以是比较也可以存在条件等。

name1:必需,满足条件1的命名1。

criteria2,name2:条件2和命名2,既满足条件2则为命名2。

注意:三个条件以上的case when语法,第二个条件开始形式是:else (criteria i) then (name i),最后才是else(name n )end,就是在最简单语法中间else前插入多个else (criteria i) then (name i)

(2)用法:对某目标字段按条件进行分组

类似于Excel的IF函数,也类似于python中的if...else嵌套使用。


2.实例

(1)两个条件判断分组。

例1:对性别进行分组并获取该字段以及姓名、年龄的信息。假设性别字段储存的是1(代表男性),0(代表女性),表名为table。

select name,age,
case when sex=1 then '男' else '女' end as sex
from table

例2:对性别进行分组获取该字段并按该字段维度获取年龄和。

select case when sex=1 then '男' else '女' end as sex,
sum(age) as age
from table
group by case when sex=1 then '男' else '女' end

(2)多条件判断分组。

例:按年龄分段获取字段并获取该字段以及姓名、性别的信息。

select name,
case when sex=1 then '男' else '女' end as sex,
case when age<18 then '儿童' else age<40 then '青年' 
else age <65  then '中年人' else '老年人' end as age
from table

注意:case when用做字段时需要在end后面另外命名,as可以忽略,比如以上代码中“(as)sex”;用group by语法处理case when时end后面不能加上命名,直接以end结束即可,否则会报错。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐