• mysql-函数CASE WHEN 统计多个字段


    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;
  • 相关阅读:
    Python学习之==>第三方模块的安装、模块导入
    Python学习之==>json处理
    Python学习之==>内置函数、列表生成式、三元表达式
    Python学习之==>函数
    Python学习之==>文件操作
    Python学习之==>集合
    函数,递归,内置函数
    python流程控制
    python文件处理
    Python基础之数据类型
  • 原文地址:https://www.cnblogs.com/sztx/p/9499773.html
Copyright © 2020-2023  润新知