在SQL 中查找男生比女生人数多的班级名称,及男女生人数

2024-12-01 12:49:17
推荐回答(2个)
回答1:

--怎么也得给个表截图吧,只好自己定义了。。。

--创建表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

回答2:

基本的数据结构给出来吧