激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - 數據庫技術 - SQL中case?when?then?else?end用法實例

SQL中case?when?then?else?end用法實例

2023-07-30 12:33未知服務器之家 數據庫技術

一、闡述 case when then else end 可以理解為java的if-else if -else。可以理解為流程控制語句或條件控制語句。可以實現資料獲取的時候,可以更多的條件和自定義邏輯。 適用情景 對已知的數據庫中數據,按照自己的邏輯,進行自定義分

一、闡述

case when then else end 可以理解為java的if-else if -else。可以理解為流程控制語句或條件控制語句。可以實現資料獲取的時候,可以更多的條件和自定義邏輯。

適用情景

  • 對已知的數據庫中數據,按照自己的邏輯,進行自定義分組和數據分析
  • 用此條件控制語句,實現自定義條件分組
  • 條件控制語句中嵌套函數達到理想的計算效果

二、具體使用

1.已知數據按照另外一種方式進行分組,分析。

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

國家(country)

人口(population)

中國

600

美國

100

加拿大

100

英國

200

法國

300

日本

250

德國

200

墨西哥

50

印度

250

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

人口

亞洲

1100

北美洲

250

其他

700

想要解決這個問題,假如使用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;

2.用一個sql語句完成不同條件的分組。

有如下數據

國家(country)

性別(sex)

人口(population)

中國

1

340

中國

2

260

美國

1

45

美國

2

55

加拿大

1

51

加拿大

2

49

英國

1

40

英國

2

60

按照國家和性別進行分組,得出結果如下

國家

中國

340

260

美國

45

55

加拿大

51

49

英國

40

60

普通情況下,用union也可以實現用一條語句進行查詢。但是那樣增加消耗(兩個select部分),而且sql語句會比較長。

下面是一個是用case函數來完成這個功能的例子

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,完成對二維表的輸出形式,充分顯示了case函數的強大。

補充:對case when 的理解總結

1、then和else后,只能寫一條輸出語句且輸出結果就是新生成列的值;when 后的條件判斷可以有多條,且可以多個字段聯合判斷;end 后的輸出也可以有多條,但必須有一個是新生成列的字段名; [常規用法: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,如果有多個,如果一條記錄滿足第一個case when就不會再去執行后面的case when,所以要想保證某個case when一定執行,就把她寫在最前面。

總結

免費資源網 - http://www.zmynmublwnt.cn/uploads/allimg/r2mt1mdykqh

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久章草在线视频 | 国产中文一区 | 福利免费观看 | 国产美女白浆 | 国产精品久久77777 | 国产91在线亚洲 | 一级毛片特黄 | 久久久久久久久久性 | 午夜在线视频一区二区三区 | 欧美一级性 | 一本色道久久综合亚洲精品小说 | 黄色影院一级片 | 国产精品午夜在线 | 久久国产精品小视频 | 久久久久久久久国产 | 亚洲精品无码不卡在线播放he | 久久久一区二区三区四区 | 偿还的影视高清在线观看 | 特级毛片a级毛片100免费 | 亚洲成人欧美在线 | 一区国产精品 | 国产精品成人av片免费看最爱 | 成人福利网 | 97青青| 久久久tv | 国产男女 爽爽爽爽视频 | 久久国产精品二国产精品 | 久国久产久精永久网页 | 黄色羞羞 | 黄色毛片视频在线观看 | 国产精品国产三级国产在线观看 | 在线日韩亚洲 | 亚洲综人网 | 深夜免费福利视频 | 鲁人人人鲁人人鲁精品 | 快播av在线 | 久久国产秒 | 成人不卡一区二区 | 国产亚洲精品成人 | 九一成人| 欧美日韩在线免费观看 |