猿问

提问关于oracle decode的小问题,具体情况如下:

比如我要查询某班男生和女生的数量分别是多少
select decode(性别,男,1,0),decode(性别,女,1,0) from 表

这里括号里面的1 0 什么意思
这里是如何计算数量的?

慕斯709654
浏览 182回答 3
3回答

慕雪6442864

decode(性别,男,1,0)其实就是做一个判断,当性别为男的时候,把男替换成1,否则就把性别字段中的内容替换成0。例: 表A字段: 性别男女男N女Y执行完楼主所写的SQL后,就变成例: 表A字段: 性别111010性别字段中不为男女的都变成了0。统计数量的换直接用聚合函数select count(decode(性别,男,1,0))就可以做到.

杨魅力

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;

慕的地6264312

应该是select sum(decode(性别,'男',1,0)),sum(decode(性别,'女',1,0))from 表这个查询的话就是查询所有男生和女生的数量decode(性别,'男',1,0) 如果性别为男,则取1,否则取0sum(decode(性别,男,1,0)) 的话就是所有1的数目,就是男生的数量了
随时随地看视频慕课网APP
我要回答