--怎么也得给个表截图吧,只好自己定义了。。。
--创建表stu
create table stu
(s_name varchar2(20)
,s_class varchar2(20)
,s_sex varchar2(10)
)
--导入6组数据
insert into stu values('张三','计算机1班','男');
insert into stu values('李四','计算机1班','男');
insert into stu values('王五','计算机1班','女');
insert into stu values('赵六','计算机2班','女');
insert into stu values('刘七','计算机2班','男');
insert into stu values('陈八','计算机3班','男');
/*先通过子查询获取男生比女生人数多的班级,然后在表stu中按班级分组,
最后通过sum和decode计算出满足条件的班级中男生、女生人数*/
--oracle 中decode(s_sex,'男',1,0)含义:if s_sex='男' return 1 else return 0
select s_class,sum(decode(s_sex,'男',1,0)) 男,sum(decode(s_sex,'女',1,0)) 女
from stu
where s_class in
--该子查询取得男生比女生人数多的班级
(select s_class
from stu
group by s_class
having sum(decode(s_sex,'男',1,0)) > sum(decode(s_sex,'女',1,0)))
group by s_class
基本的数据结构给出来吧