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

发布网友 发布时间:2024-09-26 20:19

我来回答

2个回答

热心网友 时间:2024-10-06 15:40

基本的数据结构给出来吧

热心网友 时间:2024-10-06 15:43

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

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

热心网友 时间:2024-10-06 15:37

基本的数据结构给出来吧

热心网友 时间:2024-10-06 15:37

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

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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com