欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL中case?when?then?else?end用法實(shí)例

 更新時(shí)間:2023年02月01日 15:29:40   作者:Xwzzz_  
CASE WHEN THEN ELSE END是一個(gè)固定搭配,這樣排列是想把通過(guò)格式把邏輯展示出來(lái),CASE告訴計(jì)算機(jī)接下來(lái)是條件句式了,下面這篇文章主要給大家介紹了關(guān)于SQL中case?when?then?else?end用法的相關(guān)資料,需要的朋友可以參考下

一、闡述

case when then else end 可以理解為java的if-else if -else??梢岳斫鉃榱鞒炭刂普Z(yǔ)句或條件控制語(yǔ)句??梢詫?shí)現(xiàn)資料獲取的時(shí)候,可以更多的條件和自定義邏輯。

適用情景

  • 對(duì)已知的數(shù)據(jù)庫(kù)中數(shù)據(jù),按照自己的邏輯,進(jìn)行自定義分組和數(shù)據(jù)分析
  • 用此條件控制語(yǔ)句,實(shí)現(xiàn)自定義條件分組
  • 條件控制語(yǔ)句中嵌套函數(shù)達(dá)到理想的計(jì)算效果

二、具體使用

1.已知數(shù)據(jù)按照另外一種方式進(jìn)行分組,分析。

有如下數(shù)據(jù):(為了看得更清楚,我并沒(méi)有使用國(guó)家代碼,而是直接用國(guó)家名作為primary key)

國(guó)家(country)

人口(population)

中國(guó)

600

美國(guó)

100

加拿大

100

英國(guó)

200

法國(guó)

300

日本

250

德國(guó)

200

墨西哥

50

印度

250

根據(jù)這個(gè)國(guó)家人口數(shù)據(jù),統(tǒng)計(jì)亞洲和北美洲的人口數(shù)量。應(yīng)該得到下面這個(gè)結(jié)果。

人口

亞洲

1100

北美洲

250

其他

700

想要解決這個(gè)問(wèn)題,假如使用case函數(shù),sql代碼如下:

select?sum(population),
??????????? case country
??????????? when '中國(guó)'???? then'亞洲'
??????????? when '印度'???? then'亞洲'
??????????? when '日本'???? then'亞洲'
??????????? when '美國(guó)'???? then'北美洲'
??????????? when '加拿大'? then'北美洲'
??????????? when '墨西哥'? then'北美洲'
??????????? else '其他' end
??????????? from???table_a
??????????? group by case country
??????????? when '中國(guó)'???? then'亞洲'
??????????? when '印度'???? then'亞洲'
??????????? when '日本'???? then'亞洲'
??????????? when '美國(guó)'???? then'北美洲'
??????????? when '加拿大'? then'北美洲'
??????????? when '墨西哥'? then'北美洲'
??????????? else '其他' end;

2.用一個(gè)sql語(yǔ)句完成不同條件的分組。

有如下數(shù)據(jù)

國(guó)家(country)

性別(sex)

人口(population)

中國(guó)

1

340

中國(guó)

2

260

美國(guó)

1

45

美國(guó)

2

55

加拿大

1

51

加拿大

2

49

英國(guó)

1

40

英國(guó)

2

60

按照國(guó)家和性別進(jìn)行分組,得出結(jié)果如下

國(guó)家

中國(guó)

340

260

美國(guó)

45

55

加拿大

51

49

英國(guó)

40

60

普通情況下,用union也可以實(shí)現(xiàn)用一條語(yǔ)句進(jìn)行查詢。但是那樣增加消耗(兩個(gè)select部分),而且sql語(yǔ)句會(huì)比較長(zhǎng)。

下面是一個(gè)是用case函數(shù)來(lái)完成這個(gè)功能的例子

select country,
??????????? sum( case when sex = '1' then
??????????? population else 0 end),? --男性人口
??????????? sum( case when sex = '2' then
??????????? population else 0 end)?? --女性人口
??????????? from?table_a
??????????? group by country;

這樣我們使用select,完成對(duì)二維表的輸出形式,充分顯示了case函數(shù)的強(qiáng)大。

補(bǔ)充:對(duì)case when 的理解總結(jié)

1、then和else后,只能寫一條輸出語(yǔ)句且輸出結(jié)果就是新生成列的值;when 后的條件判斷可以有多條,且可以多個(gè)字段聯(lián)合判斷;end 后的輸出也可以有多條,但必須有一個(gè)是新生成列的字段名; [常規(guī)用法:select 后到from前,直接使用case when] (例1)

2、when 后多條件判斷用and連接(例3)

3、case when 巧妙用法   [order by 后用case when] [count()中用case when]   (例2)

4、group by 后用case when   (在參考里)

5、case when,如果有多個(gè),如果一條記錄滿足第一個(gè)case when就不會(huì)再去執(zhí)行后面的case when,所以要想保證某個(gè)case when一定執(zhí)行,就把她寫在最前面。

總結(jié)

到此這篇關(guān)于SQL中case when then else end用法的文章就介紹到這了,更多相關(guān)SQL case when then else end用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • dapper使用Insert或update時(shí)部分字段不映射到數(shù)據(jù)庫(kù)

    dapper使用Insert或update時(shí)部分字段不映射到數(shù)據(jù)庫(kù)

    我們?cè)谑褂胐apper的insert或update方法時(shí)可能會(huì)遇見一些實(shí)體中存在的字段但是,數(shù)據(jù)庫(kù)中不存在的字段,這樣在使用insert時(shí)就是拋出異常提示字段不存在,這個(gè)時(shí)候該怎么解決呢,下面給大家分享示例實(shí)體代碼,感興趣的朋友一起看看吧
    2023-12-12
  • 最新DataGrip2020.2.x破解版激活碼的步驟詳解(支持Mac/Windows/Linux)

    最新DataGrip2020.2.x破解版激活碼的步驟詳解(支持Mac/Windows/Linux)

    這篇文章主要介紹了最新DataGrip2020.2.x破解版激活碼教程詳解(支持Mac/Windows/Linux),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 收藏的SQL知識(shí)以及SQL語(yǔ)句簡(jiǎn)單實(shí)踐通俗易懂

    收藏的SQL知識(shí)以及SQL語(yǔ)句簡(jiǎn)單實(shí)踐通俗易懂

    首先說(shuō)明,這個(gè)筆者2年前學(xué)習(xí)SQL的遺漏下來(lái)的筆記,由于參加完騰訊的筆試,內(nèi)容比較偏向數(shù)據(jù)機(jī)構(gòu)和編譯以及數(shù)據(jù)庫(kù),剛好要換臺(tái)本本,心里不想把它弄死在硬盤里,覺(jué)得蠻好的,所以把它都分享了
    2012-06-06
  • 關(guān)于ADOX的相關(guān)知識(shí)

    關(guān)于ADOX的相關(guān)知識(shí)

    關(guān)于ADOX的相關(guān)知識(shí)...
    2006-12-12
  • 達(dá)夢(mèng)數(shù)據(jù)庫(kù)如何設(shè)置自增主鍵的方法及注意事項(xiàng)

    達(dá)夢(mèng)數(shù)據(jù)庫(kù)如何設(shè)置自增主鍵的方法及注意事項(xiàng)

    這篇文章主要介紹了達(dá)夢(mèng)數(shù)據(jù)庫(kù)如何設(shè)置自增主鍵的方法及注意事項(xiàng)的相關(guān)資料,在達(dá)夢(mèng)數(shù)據(jù)庫(kù)中實(shí)現(xiàn)自增字段通常需要使用序列(sequence)和觸發(fā)器(trigger),需要的朋友可以參考下
    2024-09-09
  • ETL方法與過(guò)程講解

    ETL方法與過(guò)程講解

    這篇文章主要介紹了ETL方法與過(guò)程講解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • datagrip如何找到數(shù)據(jù)庫(kù)和表

    datagrip如何找到數(shù)據(jù)庫(kù)和表

    這篇文章主要介紹了datagrip入坑指南(如何找到數(shù)據(jù)庫(kù)和表)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-09-09
  • 關(guān)于hive表的存儲(chǔ)格式ORC格式的使用詳解

    關(guān)于hive表的存儲(chǔ)格式ORC格式的使用詳解

    這篇文章主要介紹了關(guān)于hive表的存儲(chǔ)格式ORC格式的使用詳解,Hive?是基于?Hadoop?的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張表,并提供類SQL查詢功能,需要的朋友可以參考下
    2023-07-07
  • SQL注入繞過(guò)的技巧總結(jié)

    SQL注入繞過(guò)的技巧總結(jié)

    這篇文章主要給大家總結(jié)了一些關(guān)于SQL注入繞過(guò)的技巧,其中包括引號(hào)繞過(guò)、逗號(hào)繞過(guò)以及比較符(<,>)繞過(guò),文中給出了詳細(xì)的介紹和示例代碼,相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-02-02
  • Navicat?Premium12進(jìn)行數(shù)據(jù)庫(kù)定期自動(dòng)備份的方法步驟

    Navicat?Premium12進(jìn)行數(shù)據(jù)庫(kù)定期自動(dòng)備份的方法步驟

    本文主要介紹了Navicat?Premium?12進(jìn)行數(shù)據(jù)庫(kù)定期自動(dòng)備份,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評(píng)論