1. 程式人生 > >Mysql之case when then end語句(附帶例項)

Mysql之case when then end語句(附帶例項)

這段時間,做專案做累了,好不容易有點個人的學習時間,利用這個小時,總結一下,最近做統計的時候常用的case語句吧。

結構:case  when… then …end

1.判斷的同時改變其值

eg:

select OperatorAccount,
        case
    when CreateTime>'2016-02-14 16:24:42' then 'after'

         when CreateTime<'2016-02-14 16:24:42' then 'before'

         else 'now' end stage
from log_login order
by CreateTime DESC

第二種寫法

 SELECT CallerNumber, CASE IsLocal
         WHEN 0 THEN '外線'

          WHEN 1 THEN '內線' END

  FROM cdr

 

2.拆分一行為多列eg:
 SELECT SipAccount, COUNT(1) AS number,IsCheck
  FROM cdr
  GROUP BY SipAccount,IsCheck

針對這個統計結果進行拆分(0表示未打分,1代表優秀,2代表合格,3代表不合格)

最終結果如下:

所以最終要用到行拆分成三列,語句如下

複製程式碼
 SELECT SipAccount,
              (
CASE IsCheck WHEN 1 THEN number END) youxiu, (CASE IsCheck WHEN 2 THEN number END) hege, (CASE IsCheck WHEN 3 THEN number END) buhege FROM (SELECT SipAccount, COUNT(1) AS number,IsCheck FROM cdr GROUP BY SipAccount,IsCheck) AS a
複製程式碼

現在結果是這樣的,你會發現雖然拆成了三列,但是最終結果還不是自己需要的,接下來就需要根據sipaccount來分組的同時對結果進行處理了。語句如下:

複製程式碼
 SELECT sipaccount,
        IF(MAX(youxiu) IS NULL,0, MAX(youxiu)) youxiu,
        IF(MAX(hege) IS NULL,0, MAX(hege)) hege,
        IF(MAX(buhege) IS NULL,0, MAX(buhege)) buhege
FROM
        (SELECT SipAccount,
        (CASE IsCheck WHEN 1 THEN number END) youxiu,
        (CASE IsCheck WHEN 2 THEN number END) hege,
        (CASE IsCheck WHEN 3 THEN number END) buhege
        FROM
     (SELECT SipAccount, COUNT(1) AS number,IsCheck  FROM cdr  GROUP BY SipAccount,IsCheck) AS a) AS b
                    GROUP BY sipaccount
複製程式碼最終得到了這個結果。正式我們需要的格式已知資料按照另外一種方式進行分組,分析。

有如下資料:(為了看得更清楚,我並沒有使用國家程式碼,而是直接用國家名作為Primary Key)
國家(country)人口(population)
中國600
美國100
加拿大100
英國200
法國300
日本250
德國200
墨西哥50
印度250

根據這個國家人口資料,統計亞洲和北美洲的人口數量。應該得到下面這個結果。
人口
亞洲1100
北美洲250
其他700

想要解決這個問題,你會怎麼做?生成一個帶有洲Code的View,是一個解決方法,但是這樣很難動態的改變統計的方式。
如果使用Case函式,SQL程式碼如下:
SELECT  SUM(population),
        CASE country
                WHEN '中國'     THEN '亞洲'
                WHEN '印度'     THEN '亞洲'
                WHEN '日本'     THEN '亞洲'
                WHEN '美國'     THEN '北美洲'
                WHEN '加拿大'  THEN '北美洲'
                WHEN '墨西哥'  THEN '北美洲'
        ELSE '其他' END
FROM    Table_A
GROUP BY CASE country
                WHEN '中國'     THEN '亞洲'
                WHEN '印度'     THEN '亞洲'
                WHEN '日本'     THEN '亞洲'
                WHEN '美國'     THEN '北美洲'
                WHEN '加拿大'  THEN '北美洲'
                WHEN '墨西哥'  THEN '北美洲'
        ELSE '其他' END;

同樣的,我們也可以用這個方法來判斷工資的等級,並統計每一等級的人數。SQL程式碼如下;
SELECT
        CASE WHEN salary <= 500 THEN '1'
             WHEN salary > 500 AND salary <= 600  THEN '2'
             WHEN salary > 600 AND salary <= 800  THEN '3'
             WHEN salary > 800 AND salary <= 1000 THEN '4'
        ELSE NULL END salary_class,
        COUNT(*)
FROM    Table_A
GROUP BY
        CASE WHEN salary <= 500 THEN '1'
             WHEN salary > 500 AND salary <= 600  THEN '2'
             WHEN salary > 600 AND salary <= 800  THEN '3'
             WHEN salary > 800 AND salary <= 1000 THEN '4'
        ELSE NULL END;
本文轉載:轉載地址:https://www.cnblogs.com/dreamflycc/p/mysql_case.html   http://lj.soft.blog.163.com/blog/static/7940248120109215191358/

相關推薦

Mysqlcase when then end語句附帶例項

這段時間,做專案做累了,好不容易有點個人的學習時間,利用這個小時,總結一下,最近做統計的時候常用的case語句吧。結構:case  when… then …end1.判斷的同時改變其值eg:select OperatorAccount, case    when CreateTime>'

mysql資料庫中case...when...then...end語句的使用

有一張表,裡面有3個欄位:語文,數學,英語。其中有3條記錄分別表示語文70分,數學80分,英語58分,請用一條sql語句查詢出這三條記錄並按以下條件顯示出來(並寫出您的思路): 大於或等於80表示優

Mysqlcase when then end 的用法

ble 分享圖片 sel ota mat ima pri bubuko name 1、創建一張表,我們這表名為 t_score drop table if exists t_score; create table t_score ( id int primary key

資料庫中case...when...then...end語句的使用

面試題 媽的今天去面試遇到這麼一道題 都忘記鳥 資料庫表 select username,case when yuwen>=80 then '優秀' when (yuwen<80 and yuwen>=60) then '及格'

【統計】SQLcase when then else end用法(用於分類統計)

case具有兩種格式。簡單case函式和case搜尋函式。--簡單case函式 case sex when '1' then '男' when '2' then '女’ else '其他' end --case搜尋函式 case when sex = '1' th

MySqlcase when then else end 的用法

sta 結束 name cas ber sel 如果 user num MySql 中 case when then else end 的用法 解釋: SELECT case ----------

mysqlcase when then .... else end 的簡單使用

建議 作用 then style 英語 com col 分享 ont 數據SQL CASE 表達式是一種通用的條件表達式,類似於其它語言中的 if/else 語句。 CASE WHEN condition THEN result    WHEN condition THE

MySql 函式 CASE WHEN THEN ELSE END 的用法

CASE 的介紹       Case 具有兩種格式,簡單的Case函式和Case搜尋函式       簡單的Case函式:       建立一張表並且新增資料: /* Navic

MySQL中的case when then end中對於NULL值判斷容易犯錯的地方

sql中的case when 有點類似於Java中的switch語句,比較靈活,但是在Mysql中對於Null的處理有點特殊,之前被這個問題困擾過,這次又被困擾了,好記性不如亂筆頭,還是記一下印象會深刻一點。Mysql中case when語法: 語法1: CASE cas

SQL case when then end根據某列資料內容在新列顯示自定義內容 SQL利用Case When Then多條件判斷SQL 語句

select ID,Username,namer=(case when(score<='50') then '實習' when(score>'50' and score<='500' ) then

T-SQL語句case when then 多條件判斷

CASE    WHEN 條件1 THEN 結果1    WHEN 條件2 THEN 結果2    WHEN 條件3 THEN 結果3    WHEN 條件4 THEN 結果4 .........    WHEN 條件N THEN 結果N    ELSE 結果X END Case具有兩種格式。簡單Case函

sql語句case when then end as 以及from前有逗號會報錯

sql 語句 from前面有逗號,會報錯,顯示某一欄位名稱不在表內; /usr/bin/python2.7 /home/sc/PycharmProjects/sc/model-feature-engi

oraclecase when then else end用法詳解

闡述 case when then else end 可以理解為java的if-else if -else。是流程控制語句或者條件控制語句,可以自定義邏輯 使用場景 對已知的資料進行邏輯分組或者進

專案中用到的sql語句(case when...then... end )

        String sql = "select t.ID,t.ORDER_NO,t.TASK_ID,t.TASK_NAME, "                     + "t.TASK_START_TIME,t.TASK_END_TIME,t.USED_TIM

SQLcase when then用法(用於分類統計)

char purge 格式 但是 統計 spa 比較 log 永遠 ase具有兩種格式。簡單case函數和case搜索函數。 --簡單case函數 case sex when ‘1‘ then ‘男‘ when ‘2‘ then ‘女’

mysql資料型別和select語句group by、 limit

mysql之資料型別的理解 mysql資料型別之整形 mysql資料型別之浮點型 mysql資料型別之日期時間型 mysql資料型別之字元型 刪除記錄(單表刪除) delete from 表單 where id=5 select

CASE...WHEN...THEN...END

當colume 與condition 條件相等時結果為result (CASE到END為一個result引數拿來使用) 。。。 case when condition then result when condition then result when condition th

MySQLcase when then else的用法

Case具有兩種格式。簡單Case函式和Case搜尋函式。 –簡單Case函式 CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜尋函式 CASE WHEN sex = ‘1’ THEN ‘男’ WHEN sex

MySQLCASE WHEN THEN用法

MySQL中CASE WHEN THEN用於分類統計 1、建立一個表 create table user(     id int auto_increment primary key,     age tinyint unsigned

SQLcase when then用法

case具有兩種格式:                              簡單case函式;                             case搜尋函式; --簡單case函式 case sex when '1' then '男' when