最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一篇文章帶你了解SQL之CASE WHEN用法詳解

 更新時(shí)間:2021年08月10日 16:35:59   作者:_Rt  
本文介紹下,在mysql數(shù)據(jù)庫中,有關(guān)case when語句的用法,介紹了case when語句的基礎(chǔ)知識(shí),并提供了相關(guān)實(shí)例,供大家學(xué)習(xí)參考,有需要的朋友不要錯(cuò)過

簡(jiǎn)單CASE WHEN函數(shù):

CASE SCORE WHEN 'A' THEN '優(yōu)' ELSE '不及格' END
CASE SCORE WHEN 'B' THEN '良' ELSE '不及格' END
CASE SCORE WHEN 'C' THEN '中' ELSE '不及格' END

 等同于,使用CASE WHEN條件表達(dá)式函數(shù)實(shí)現(xiàn):

CASE WHEN SCORE = 'A' THEN '優(yōu)'
     WHEN SCORE = 'B' THEN '良'
     WHEN SCORE = 'C' THEN '中' ELSE '不及格' END

 THEN后邊的值與ELSE后邊的值類型應(yīng)一致,否則會(huì)報(bào)錯(cuò)。如下:

CASE SCORE WHEN 'A' THEN '優(yōu)' ELSE 0 END

'優(yōu)'和0數(shù)據(jù)類型不一致則報(bào)錯(cuò): 

[Err] ORA-00932: 數(shù)據(jù)類型不一致: 應(yīng)為 CHAR, 但卻獲得 NUMBER

簡(jiǎn)單CASE WHEN函數(shù)只能應(yīng)對(duì)一些簡(jiǎn)單的業(yè)務(wù)場(chǎng)景,而CASE WHEN條件表達(dá)式的寫法則更加靈活。

CASE WHEN條件表達(dá)式函數(shù):類似JAVA中的IF ELSE語句。

格式:

CASE WHEN condition THEN result

[WHEN...THEN...]

ELSE result

END

condition是一個(gè)返回布爾類型的表達(dá)式,如果表達(dá)式返回true,則整個(gè)函數(shù)返回相應(yīng)result的值,如果表達(dá)式皆為false,則返回ElSE后result的值,如果省略了ELSE子句,則返回NULL。

下面介紹幾種常用場(chǎng)景。

場(chǎng)景1:有分?jǐn)?shù)score,score<60返回不及格,score>=60返回及格,score>=80返回優(yōu)秀

SELECT
    STUDENT_NAME,
    (CASE WHEN score < 60 THEN '不及格'
        WHEN score >= 60 AND score < 80 THEN '及格'
        WHEN score >= 80 THEN '優(yōu)秀'
        ELSE '異常' END) AS REMARK
FROM
    TABLE

 注意:如果你想判斷score是否null的情況,WHEN score = null THEN '缺席考試',這是一種錯(cuò)誤的寫法,正確的寫法應(yīng)為:

CASE WHEN score IS NULL THEN '缺席考試' ELSE '正常' END

場(chǎng)景2:現(xiàn)老師要統(tǒng)計(jì)班中,有多少男同學(xué),多少女同學(xué),并統(tǒng)計(jì)男同學(xué)中有幾人及格,女同學(xué)中有幾人及格,要求用一個(gè)SQL輸出結(jié)果。

表結(jié)構(gòu)如下:其中STU_SEX字段,0表示男生,1表示女生。

STU_CODE STU_NAME STU_SEX STU_SCORE
XM 小明 0 88
XL 小磊 0 55
XF 小峰 0 45
XH 小紅 1 66
XN 曉妮 1 77
XY 小伊 1 99
SELECT 
	SUM (CASE WHEN STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_COUNT,
	SUM (CASE WHEN STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_COUNT,
	SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_PASS,
	SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_PASS
FROM 
	THTF_STUDENTS

輸出結(jié)果如下:

MALE_COUNT FEMALE_COUNT MALE_PASS FEMALE_PASS
3 3 1 3

場(chǎng)景3:經(jīng)典行轉(zhuǎn)列,并配合聚合函數(shù)做統(tǒng)計(jì)

現(xiàn)要求統(tǒng)計(jì)各個(gè)城市,總共使用了多少水耗、電耗、熱耗,使用一條SQL語句輸出結(jié)果

有能耗表如下:其中,E_TYPE表示能耗類型,0表示水耗,1表示電耗,2表示熱耗

E_CODE E_VALUE E_TYPE
北京 28.50 0
北京 23.51 1
北京 28.12 2
北京 12.30 0
北京 15.46 1
上海 18.88 0
上海 16.66 1
上海 19.99 0
上海 10.05 0
SELECT 
	E_CODE,
	SUM(CASE WHEN E_TYPE = 0 THEN E_VALUE ELSE 0 END) AS WATER_ENERGY,--水耗
	SUM(CASE WHEN E_TYPE = 1 THEN E_VALUE ELSE 0 END) AS ELE_ENERGY,--電耗
	SUM(CASE WHEN E_TYPE = 2 THEN E_VALUE ELSE 0 END) AS HEAT_ENERGY--熱耗
FROM 
	THTF_ENERGY_TEST
GROUP BY
	E_CODE

 輸出結(jié)果如下

E_CODE WATER_ENERGY ELE_ENERGY HEAT_ENERGY
北京 40.80 38.97 28.12
上海 48.92 16.66 0

場(chǎng)景4:CASE WHEN中使用子查詢

根據(jù)城市用電量多少,計(jì)算用電成本。假設(shè)電能耗單價(jià)分為三檔,根據(jù)不同的能耗值,使用相應(yīng)價(jià)格計(jì)算成本。

 價(jià)格表如下:

P_PRICE P_LEVEL P_LIMIT
1.20 0 10
1.70 1 30
2.50 2 50

當(dāng)能耗值小于10時(shí),使用P_LEVEL=0時(shí)的P_PRICE的值,能耗值大于10小于30使用P_LEVEL=1時(shí)的P_PRICE的值...

CASE WHEN energy <= (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 0) THEN (SELECT P_PRICE FROM TABLE_PRICE WHERE P_LEVEL = 0)
    WHEN energy > (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 0) AND energy <= (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 1) THEN (SELECT P_PRICE FROM TABLE_PRICE WHERE P_LEVEL = 1)
    WHEN energy > (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 1) AND energy <= (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 2) THEN (SELECT P_PRICE FROM TABLE_PRICE WHERE P_LEVEL = 2)

 場(chǎng)景5:結(jié)合max聚合函數(shù)

CASE WHEN 函數(shù)使用起來簡(jiǎn)單易懂,此篇文章只作了簡(jiǎn)單的使用介紹,還需在實(shí)際工作中根據(jù)業(yè)務(wù)場(chǎng)景不同來靈活使用。

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • MySQL中在查詢結(jié)果集中得到記錄行號(hào)的方法

    MySQL中在查詢結(jié)果集中得到記錄行號(hào)的方法

    這篇文章主要介紹了MySQL中在查詢結(jié)果集中得到記錄行號(hào)的方法,本文解決方法是通過預(yù)定義用戶變量來實(shí)現(xiàn),需要的朋友可以參考下
    2015-01-01
  • 探討MySQL?保存日期用哪種數(shù)據(jù)類型

    探討MySQL?保存日期用哪種數(shù)據(jù)類型

    在設(shè)計(jì)數(shù)據(jù)庫表時(shí)不可避免的需要用到時(shí)間類型,到底選擇那種數(shù)據(jù)類型來表示時(shí)間是一個(gè)值的討論的問題,這篇文章主要介紹了MySQL保存日期用哪種數(shù)據(jù)類型,需要的朋友可以參考下
    2023-08-08
  • Mysql?數(shù)據(jù)庫結(jié)構(gòu)及索引類型

    Mysql?數(shù)據(jù)庫結(jié)構(gòu)及索引類型

    這篇文章主要介紹了Mysql?數(shù)據(jù)庫結(jié)構(gòu)及索引類型,數(shù)據(jù)庫索引是?mysql?數(shù)據(jù)庫中重要的組成部分,是數(shù)據(jù)庫查詢數(shù)據(jù)速度提升的關(guān)鍵,本文將介紹數(shù)據(jù)庫索引的一些內(nèi)容,下文更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-05-05
  • MySQL優(yōu)化之如何寫出高質(zhì)量sql語句

    MySQL優(yōu)化之如何寫出高質(zhì)量sql語句

    在數(shù)據(jù)庫日常維護(hù)中,最常做的事情就是SQL語句優(yōu)化,因?yàn)檫@個(gè)才是影響性能的最主要因素。這篇文章主要給大家介紹了關(guān)于MySQL優(yōu)化之如何寫出高質(zhì)量sql語句的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • 使用MySQL MySqldump命令導(dǎo)出數(shù)據(jù)時(shí)的注意事項(xiàng)

    使用MySQL MySqldump命令導(dǎo)出數(shù)據(jù)時(shí)的注意事項(xiàng)

    這篇文章主要介紹了使用MySQL MySqldump命令導(dǎo)出數(shù)據(jù)時(shí)的注意事項(xiàng),很實(shí)用的經(jīng)驗(yàn)總結(jié),需要的朋友可以參考下
    2014-07-07
  • 實(shí)現(xiàn)MySQL回滾的Python腳本的編寫教程

    實(shí)現(xiàn)MySQL回滾的Python腳本的編寫教程

    這篇文章主要介紹了實(shí)現(xiàn)MySQL回滾的Python腳本的編寫教程,文中的回滾針對(duì)的是DELETE語句的數(shù)據(jù)庫誤操作,需要的朋友可以參考下
    2015-11-11
  • 清空mysql 查詢緩存的可行方法

    清空mysql 查詢緩存的可行方法

    mysql對(duì)同一條sql進(jìn)行了緩存,在第二次運(yùn)行時(shí), 瞬間就完成了,若要清除緩存,可通過下面的方法來實(shí)現(xiàn)
    2014-07-07
  • 將MySQL從MyISAM轉(zhuǎn)換成InnoDB錯(cuò)誤和解決辦法

    將MySQL從MyISAM轉(zhuǎn)換成InnoDB錯(cuò)誤和解決辦法

    原來自己用的是為了裝的, 所以在設(shè)置database usage(如下圖1)的時(shí)候按照discuz官方的建議,選的都是Non-Transactional Database Only(只支持MyISAM數(shù)據(jù)引擎的非事務(wù)數(shù)據(jù)庫),用MyISAM數(shù)據(jù)庫,還沒涉及到需要InnoDB,因此打算直接不加載INNODB引擎。
    2011-09-09
  • Mysql查詢數(shù)據(jù)庫連接狀態(tài)以及連接信息詳解

    Mysql查詢數(shù)據(jù)庫連接狀態(tài)以及連接信息詳解

    這篇文章主要給大家介紹了關(guān)于Mysql查詢數(shù)據(jù)庫連接狀態(tài)以及連接信息的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 一次Mysql使用IN大數(shù)據(jù)量的優(yōu)化記錄

    一次Mysql使用IN大數(shù)據(jù)量的優(yōu)化記錄

    這篇文章主要給大家介紹了關(guān)于Mysql使用IN大數(shù)據(jù)量的優(yōu)化的實(shí)戰(zhàn)記錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評(píng)論

临安市| 科尔| 东平县| 铜陵市| 黄冈市| 贺兰县| 句容市| 东平县| 班戈县| 乌兰县| 阿瓦提县| 应城市| 宜良县| 宝鸡市| 安国市| 廊坊市| 合川市| 屯昌县| 息烽县| 柳州市| 新竹县| 郎溪县| 新巴尔虎右旗| 广东省| 桦南县| 澳门| 九台市| 曲水县| 徐闻县| 阿鲁科尔沁旗| 高尔夫| 西乌珠穆沁旗| 顺义区| 新安县| 乐清市| 泉州市| 康马县| 迁安市| 紫阳县| 华池县| 翁牛特旗|