mysql-函數CASE WHEN 統計多個欄位

来源:http://www.cnblogs.com/sztx/archive/2017/08/23/7419197.html
-Advertisement-
Play Games

case when語句,用於計算條件列表並返回多個可能結果表達式之一。CASE 具有兩種格式:1.when when_expression,是使用簡單 CASE 格式時所計算的表達式。Input_expression 是任何有效的SQL表達式。2.when Boolean_expression,使用... ...


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;

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [20170824]11G備庫啟用DRCP連接.txt--//參考鏈接:http://blog.itpub.net/267265/viewspace-2099397/blogs.oracle.com/database4cn/adg%e5%a4%87%e5%ba%93%e7%9a%84drcp%e8% ...
  • 概述: 視圖即是虛擬表,也稱為派生表,因為它們的內容都派生自其它表的查詢結果。雖然視圖看起來感覺和基本表一樣,但是它們不是基本表。基本表的內容是持久的,而視圖的內容是在使用過程中動態產生的。——摘自《SQLite權威指南》 使用視圖的優點: 1.可靠的安全性 2.查詢性能提高 3.有效應對靈活性的功 ...
  • 創建序列 create sequence seq_student start with 6 increment by 1 maxvalue 500 nominvalue nocycle nocache; 創建觸發器 create or replace trigger trigger_student ... ...
  • HDFS ,Hadoop Distribute File System,hadoop分散式文件系統。 主從架構,分主節點NameNode,從節點DataNode.當然還有個SecondaryName,但這不是淺析里的點.這裡主要講下namenode和datanode的基本概念, 並描述下讀寫過程. ...
  • 生成式對抗網路(gennerative adversarial network,GAN),谷歌2014年提出網路模型。靈感自二人博弈的零和博弈,目前最火的非監督深度學習。GAN之父,Ian J.Goodfellow,公認人工智慧頂級專家。 原理。生成式對搞網路包含一個生成模型(generative ...
  • 本文章拿來學慣用||參考資料:http://www.2cto.com/database/201308/236361.html 對MySql查詢緩存及SQL Server過程緩存的理解及總結 一、MySql的Query Cache 1、Query Cache MySQL Query Cache是用來緩 ...
  • 1 外鍵 外鍵:foreign key,外面的鍵(鍵不在自己表中),如果一張表中有一個欄位(非主鍵)指向另外一張表的主鍵,那麼將該欄位稱為外鍵。 1.1 增加外鍵 外鍵可以在創建表的時候或創建表之後增加(但是要考慮數據的問題)。 方案一:在創建表的時候增加外鍵,在所有的表欄位之後,使用foreign ...
  • -- 連接mysql 資料庫(前提是配置好MySQL資料庫的環境變數,加入path)mysql -uroot -p -- 設置文本的輸入輸出編碼:cmd 使用的是gbk,不然顯示亂碼set names gbk; -- 創建資料庫create database mydatabase charset u ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...