MySQL從刪庫到跑路(10):case when——國色天香、傾國傾城,給漂亮小姐姐分個類

一生一代一篇文,爭教兩處銷魂。上回說到,李有爲跟着小賣部大爺,裝逼界的傳奇人物逼神阿六敦學了一招group by分組後自以爲可以縱橫天下,然而很快,他便發現人外有人、天外有天,強中還有強中手,一山還比一山高。

 本以爲自己無敵於天下,可誰曾想自己卻成了《天龍八部》裏的鳩摩智,遇上了三個掛逼,一個開局滿級各種技能全部精通,一個新賬號開掛各種屬性全部加滿,一個半路盜號身上全是史詩神裝。這,怎麼打?拿頭去打?

 李有爲怎麼也想不到,學完了group by之後,自己的頭上卻已被更多的烏雲籠罩。

 一念至此,大爺那張笑臉又從記憶深處慢慢浮現出來,對sex字段分組,我想要展示結果的時候,把M替換成男,把N替換成女怎麼做?

 顏值這個字段只是一個數字,對人沒有什麼感官上的衝擊,如果我把顏值大於等於250的妹子歸類到“舉世無雙”,把顏值大於等於220小於250的妹子歸類到“傾國傾城”,先對這些妹子進行一個範圍轉換,然後在進行分組又該怎麼做?

 基礎信息表裏面有sexual_orientation(性取向)這麼一個字段,統計一下各個顏值階段的妹子的性取向情況,爲了簡單明瞭的觀察,我需要把性取向的結果放到一列做橫向對比,這個時候又該怎麼辦?

怎麼辦?大廈之將傾,總得有人出來力挽狂瀾,而這個救世主正是今天的豬腳,case when

-- case wen 有兩種用法
-- 1、簡單 case
case column
	when 條件 then 返回值
	when 條件 then 返回值
	…………
	else 不符合上述條件的返回值
	end

-- 2、case 搜索函數
case
	when column=條件 then 返回值
	when column=條件 then 返回值
	…………
	else 不符合上述條件的返回值
	end

-- 說明:
-- 第二種方法可以寫複雜的條件表達式,因此功能更加強大
-- 既然功能強大,我們就只講第二種,第一種瞭解即可
-- 如果滿足第一個條件,以後的就不會執行
-- 最後的else 可以省略
-- 可以用括號把case when整個代碼包起來,更優美……

 case when 可以實現三種強大的功能,**1、等值轉換,2、範圍轉換,3、列轉行。**讓我們一個一個來看。

1、等值轉換

 轉換sex中的M F,M爲男,F爲女

SELECT
	( CASE 
		WHEN sex = 'M' THEN '男' ELSE '女' 
	   END ) AS sex,
	count( 1 ) as num
FROM
	human_base_info 
GROUP BY
	sex

-- 兩種效果一樣
SELECT
	( CASE 
			WHEN sex = 'M' THEN '男' 
			WHEN sex = 'F' THEN '女' 
		END ) AS sex,
	count( 1 ) AS num 
FROM
	human_base_info 
GROUP BY
	sex

在這裏插入圖片描述

2、範圍轉換

 按照顏值給美女分個類,>=250 舉世無雙 220-250 傾國傾城,200-220 國色天香 150-200 天生麗質 100-150 秀色可餐 <100秀色可餐,做好範圍值劃分之後,在進行分組計數統計

SELECT
	(
	CASE
		WHEN looks >= 250 THEN'舉世無雙' 
		WHEN looks >= 220 AND looks < 250 THEN '傾國傾城'
		WHEN looks >= 200 AND looks < 220 THEN '國色天香' 
		WHEN looks >= 150 AND looks < 200 THEN '天生麗質' 
		WHEN looks >= 100 AND looks < 150 THEN'秀色可餐' 
		WHEN looks < 100 THEN'小家碧玉' 
	END ) AS looks_type,
	count( 1 ) AS num 
FROM
	human_base_info 
WHERE
	sex = 'F' 
GROUP BY
	looks_type

在這裏插入圖片描述

3、行轉列

 先按照顏值進行範圍值劃分,
 然後對性取向(sexual_orientation)進行判斷,如果符合的計“1”,否者爲0
 最後進行分組求和統計

SELECT
	(
	CASE
		WHEN looks >= 250 THEN'舉世無雙' 
		WHEN looks >= 220 AND looks < 250 THEN '傾國傾城'
		WHEN looks >= 200 AND looks < 220 THEN '國色天香' 
		WHEN looks >= 150 AND looks < 200 THEN '天生麗質' 
		WHEN looks >= 100 AND looks < 150 THEN'秀色可餐' 
		WHEN looks < 100 THEN'小家碧玉' 
	END ) AS looks_type,
	sum( CASE WHEN sexual_orientation = 0 THEN 1 ELSE 0 END ) AS 異性戀,
	sum( CASE WHEN sexual_orientation = 1 THEN 1 ELSE 0 END ) AS 同性戀,
	sum( CASE WHEN sexual_orientation = 2 THEN 1 ELSE 0 END ) AS 雙性戀,
	sum( CASE WHEN sexual_orientation = 3 THEN 1 ELSE 0 END ) AS 無性戀 
FROM
	human_base_info 
WHERE
	sex = 'F' 
GROUP BY
	looks_type

在這裏插入圖片描述

舉世無雙,傾國傾城,國色天香,天生麗質、秀色可餐、小家碧玉,世間美女千千萬,老子高興天天換……

 “醒一醒!”大爺在一旁輕輕拍了拍李有爲的腦袋,“我換你腦殼一坨鐵,才吃了一包酒鬼花生就醉成這樣了?”

 "我麻煩你照一照鏡子,看一下自己現在究竟有幾斤幾兩”

在這裏插入圖片描述

這次纔是你的真實寫照……

 "嗚嗚嗚……”,被大爺這麼一說,李有爲嗚咽着哭出了聲,“前輩,明天就是全校裝逼考試大會了,說好的一飛沖天,一鳴驚人呢,都考試前一天晚上了,我還是從前那個騷年,沒有一點點改變……”

"小夥子,你磨着急嘛!"大爺突然嘿嘿笑道,“真正的好戲纔剛剛上演。”

大爺口中的好戲究竟是什麼,明天的裝逼考試大會又會發生什麼,李有爲究竟能不能在裝逼大會上一鳴驚人?

預知後事如何,請聽下回分解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章