table student
col: sno sname sage ssex sdept
结果如下:(两条结果)
result1:
sdept 总人数 男生人数 女生人数
result2:
sdept 15<sage<18 18<sage<20 其他人数(其中 Student 是表 COL是字段 SNO是学号 SNAME是姓名
SAGE是年龄 SSEX是性别 SDEPT是院系)
请问上述2个RUSULT的用SQL的实现!
拜谢!!!!
col: sno sname sage ssex sdept
结果如下:(两条结果)
result1:
sdept 总人数 男生人数 女生人数
result2:
sdept 15<sage<18 18<sage<20 其他人数(其中 Student 是表 COL是字段 SNO是学号 SNAME是姓名
SAGE是年龄 SSEX是性别 SDEPT是院系)
请问上述2个RUSULT的用SQL的实现!
拜谢!!!!
表内数据:
SNO SNAME SAGE SSEX SDEPT
---------- ---------- ---------- ---------- ----------
1 wang1 16 男 计算机
2 wang12 16 女 计算机
3 wang13 18 男 计算机
4 wang14 16 女 计算机
5 wang15 16 男 物理
6 wang16 18 女 物理
7 wang17 16 男 物理
8 wang18 21 男 物理
9 wang19 16 男 计算机select distinct student.sdept,male+fmale as 总人数,fmale,male
from student,
(select count(*) fmale,sdept from student where ssex='女'
group by sdept)fmale,
(select count(*) male,sdept from student where ssex='男'
group by sdept) male
where student.sdept=fmale.sdept and student.sdept=male.sdept
;结果:
SDEPT 总人数 FMALE MALE
---------- ---------- ---------- ----------
计算机 5 2 3
物理 4 1 3第二个类似 可以自己作把
select sdept,count(*) 总人数,count(decode(ssex,'女',1)) FMALE,count(decode(ssex,'男',1)) MALE
from student
group by sdept;
count(decode(abs(sign(20-sage)+sign(sage-19)),2,1,1,1)) "18<sage<20",
count(decode(sign(sage-20),1,1)) else
from student;
怎麼寫?