阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL函数CASE WHEN 统计多个字段

135次阅读
没有评论

共计 1770 个字符,预计需要花费 5 分钟才能阅读完成。

case when 语句,用于计算条件列表并返回多个可能结果表达式之一。
CASE 具有两种格式:
1、简单 case 函数:

case input_expression
    when when_expression then result_expression
        [ ...n ]
    [ 
        else else_result_expression
    end

2、case 搜索函数:

case    
    when Boolean_expression then result_expression
        [ ...n ]
    [ 
        esle else_result_expression
    end    

参数:
input_expression

是使用简单 CASE 格式时所计算的表达式。Input_expression 是任何有效的 SQL 表达式。

when when_expression

使用简单 CASE 格式时 input_expression 所比较的简单表达式。when_expression 是任意有效的 SQL 表达式。input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。

[…n]占位符

可以使用多个 when when_expression then result_expression 子句或 WHEN boolean_expression THEN result_expression 子句

then result_expression

当 input_expression = when_expression 取值为 true,或者 boolean_expression 取值为 true 时返回的表达式。
result expression 是任意有效的 sql 表达式。

esle else_result_expression

当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算取值不为 TRUE,CASE 将返回 NULL 值。else_result_expression 是任意有效的 sql 表达式。Else_result_expression 和所有 result_expression 的数据类型必须相同,或者必须是隐性转换。

when Boolean_expression

使用 case 搜索格式时所计算的布尔表达式。boolean_expression 是任意有效的布尔表达式。

结果类型

从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型
创建要操作函数使用的表:

drop table if exists test_list;
create table test_list(id int primary key auto_increment comment 'id 自增',
age int not null comment'年龄',
name varchar(225) not null,
sex int not null default '1' comment'性别 1 男,2 是女'

)engine=MyISAM default charset=utf8 comment'测试查询函数表';
insert into test_list values(1,10,'张一 ',1),(2,15,' 张二 ',2),(3,20,' 张三 ',1),(4,25,' 张四 ',2),(5,30,' 张五',1);

简单 case 函数实例:

-- 统计年龄, 姓名条件的
select count(case age when 10 then age else null end) as age_num,count(case name when '张五' then name end) as name_num from test_list;

case 搜索函数实例:

-- 统计年龄, 姓名条件的
select count(case when age between 10 and 30 then age else null end) as age_num,count(case when name='张五' then name end) as name_num from test_list;

排序使用 case when 搜索函数:

-- case 排序
select * from test_list order by case when age>10 then sex  end desc;

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-08/146503.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计1770字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中