• 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;
  • 相关阅读:
    css伪类函数 :is() 和 :where()
    卷积层 / 全连接层 的空间和计算复杂度
    mysql中分组获取前三条记录的方法
    sql server数据去重复的四种方法
    C#获取dynamic(动态)实体的属性值
    Sqlserver使用游标循环插入,把上一个select语句的结果当成value值的一部分insert到一张表
    红玫瑰与白玫瑰
    解决vue3中通过params传值以后,刷新页面,params丢失问题。
    mybatis 注解的方式查询
    了解Android已发布的各种版本(即1.0、2.0、3.0、4.0、5.0、6.0、7.0、8.0)
  • 原文地址:https://www.cnblogs.com/sztx/p/9499773.html
Copyright © 2020-2023  润新知