3 回答

TA貢獻1812條經驗 獲得超5個贊
decode(性別,男,1,0)其實就是做一個判斷,當性別為男的時候,把男替換成1,否則就把性別字段中的內容替換成0。
例: 表A
字段: 性別
男
女
男
N
女
Y
執行完樓主所寫的SQL后,就變成
例: 表A
字段: 性別
1
1
1
0
1
0
性別字段中不為男女的都變成了0。
統計數量的換直接用聚合函數select count(decode(性別,男,1,0))就可以做到.

TA貢獻1811條經驗 獲得超6個贊
DECODE函數相當于一條件語句(IF).它將輸入數值與函數中的參數列表相比較,根據輸入值返回一個對應值。函數的參數列表是由若干數值及其對應結果值組成的若干序偶形式。當然,如果未能與任何一個實參序偶匹配成功,則函數也有默認的返回值。區別于SQL的其它函數,DECODE函數還能識別和操作空值.
其具體的語法格式如下:
DECODE(input_value,value,result[,value,result…][,default_result]);
其中:
input_value 試圖處理的數值。DECODE函數將該數值與一系列的序偶相比較,以決定最后的返回結果
value 是一組成序偶的數值。如果輸入數值與之匹配成功,則相應的結果將被返回。對應一個空的返回值,可以使用關鍵字NULL于之對應
result 是一組成序偶的結果值
default_result 未能與任何一序偶匹配成功時,函數返回的默認值
下面的例子說明了,如何讀取用戶CHECKUP表SEAPARK中的BLOOD_TEST_FLAG列下的項目,作為DECODE函數的實參支持值。
SELECT checkup_type,
DECODE(blood_test_flag,’Y’,’Yes’,’N’,’No’,NULL,’None’,’Invalid’)
FROM checkup;

TA貢獻1817條經驗 獲得超6個贊
應該是
select sum(decode(性別,'男',1,0)),sum(decode(性別,'女',1,0))
from 表
這個查詢的話就是查詢所有男生和女生的數量
decode(性別,'男',1,0) 如果性別為男,則取1,否則取0
sum(decode(性別,男,1,0)) 的話就是所有1的數目,就是男生的數量了
- 3 回答
- 0 關注
- 222 瀏覽
添加回答
舉報