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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM