2,497
社区成员
发帖
与我相关
我的任务
分享
--SQLServer:
select A.ClassID,C.ClassName,cast(round(A.cnt1/A.cnt2*100,0) as varchar(10))+'%' from
(select ClassID,count(1) cnt1 from Student where Grender='男' group by ClassID) A inner join
(select ClassID,count(1) cnt2 from Student where Grender='女' group by ClassID) B
on A.ClassID=B.ClassID
left join Class C
on A.ClassID=C.ClassID
create table CLASS
(
CLASSID VARCHAR2(10) not null,
CLASSNAME VARCHAR2(10)
)
-- Create/Recreate primary, unique and foreign key constraints
alter table CLASS
add constraint PK_CLASS primary key (CLASSID)
-- Create table
create table STUDENT
(
STUDENTID VARCHAR2(10) not null,
STUDENTNAME VARCHAR2(10),
GRENDER VARCHAR2(10),
AGE VARCHAR2(10),
CLASSID VARCHAR2(10)
)
tablespace RCDATA
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
alter table STUDENT
add constraint FK_STUDENT_CLASSID foreign key (CLASSID)
references CLASS (CLASSID);
insert into CLASS (CLASSID, CLASSNAME)
values ('001', '软开01班');
insert into CLASS (CLASSID, CLASSNAME)
values ('002', '软开02班');
insert into CLASS (CLASSID, CLASSNAME)
values ('003', '中文01班');
insert into STUDENT (STUDENTID, STUDENTNAME, GRENDER, AGE, CLASSID)
values ('00101', '张飞', '男', '20', '001');
insert into STUDENT (STUDENTID, STUDENTNAME, GRENDER, AGE, CLASSID)
values ('00102', '吕布', '男', '25', '001');
insert into STUDENT (STUDENTID, STUDENTNAME, GRENDER, AGE, CLASSID)
values ('00103', '貂蝉', '女', '16', '001');
insert into STUDENT (STUDENTID, STUDENTNAME, GRENDER, AGE, CLASSID)
values ('00201', '刘备', '男', '30', '002');
insert into STUDENT (STUDENTID, STUDENTNAME, GRENDER, AGE, CLASSID)
values ('00202', '诸葛亮', '男', '30', '002');
insert into STUDENT (STUDENTID, STUDENTNAME, GRENDER, AGE, CLASSID)
values ('00203', '大乔', '女', '17', '002');
insert into STUDENT (STUDENTID, STUDENTNAME, GRENDER, AGE, CLASSID)
values ('00204', '小乔', '女', '16', '002');
insert into STUDENT (STUDENTID, STUDENTNAME, GRENDER, AGE, CLASSID)
values ('00301', '凤姐', '女', '25', '003');
select a.classid,a.classname,
(select count(1) from student b where a.classid =b.classid and b.grender = '男') as 男生,
(select count(1) from student b where a.classid =b.classid and b.grender = '女') as 女生,
(select count(1) from student b where a.classid =b.classid and b.grender = '男')/(select count(1) from student b where a.classid =b.classid and b.grender = '女') *100 ||'%' as 男女比
from class a