一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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.ythuaji.com.cn/uploads/allimg/r2mt1mdykqh

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久嫩草影院网站 | 国内精品久久久久香蕉 | 美女脱得一二净无内裤全身的照片 | 久久se精品一区二区国产 | 欧美日韩亚洲第一区在线 | 动漫美女被褥吸奶漫画漫画 | 911精品国产亚洲日本美国韩国 | 国产主播福利在线观看 | 爱爱小说漫画 | 欧美一级xxxx俄罗斯一级 | 国产日本免费 | 超高清欧美同性videos | 国内精品久久久久影院网站 | 国产高清在线不卡 | 成人曼画| 国产一区二区三区在线看 | 99草视频| 色综合天天五月色 | 5g影院天天爽爽 | 亚洲AV精品一区二区三区不卡 | 色一级| 亚洲精品www久久久久久久软件 | 激情视频激情小说 | 欧美另类videos另类粗暴 | 好大好爽好硬我要喷水了 | 精品视频一区二区三区 | sss亚洲国产欧美一区二区 | 亚洲天堂影院在线观看 | 欧美午夜精品 | 日韩亚洲人成网站在线播放 | 32pao强力打造免费高速高 | 三级理论在线播放大全 | 欧美男人天堂 | 四虎影视在线永久免费观看 | 亚洲日本aⅴ片在线观看香蕉 | 国产亚洲精品福利在线 | 动漫美女3d被爆漫画 | 精品视频免费 | 欧美精品一区二区三区免费 | 97综合| 美国videos|