人员情况表(employee)中字段包括,员工号(ID),姓名(name),年龄(age),文化程度(wh):包括四种情况(本科以上,大专,高中,初中以下),现在我要根据年龄字段查询统计出:表中文化程度为本科以上,大专,高中,初中以下,各有多少人,占总人数多少。结果如下:
学历 年龄 人数 百分比
本科以上 20 34 14
大专 20 33 13
高中 20 33 13
初中以下 20 100 40
本科以上 21 50 20
2.表结构:
教师ID 学生ID 学科名称 成绩
1 1 数学 80
1 2 数学 50
2 3 英语 61
2 4 英语 59
...
用一个sql完成
分教师统计出每个教师每门课及格人数和及格率
结果格式:
教师ID 学科名称 及格人数 及格率
1 数学 1 50%
题一,
create table emp(id number,name varchar2(10),age int,wh varchar2(10));
insert into emp
select 1,'tom',20,'本科以上' from dual
union all select 2,'rose',20,'本科以上' from dual
union all select 3,'aa',21,'本科以上' from dual
union all select 4,'bb',21,'大专' from dual
union all select 5,'cc',21,'大专' from dual
union all select 6,'dd',21,'高中' from dual
union all select 7,'ee',21,'初中以下' from dual;
select wh 学历,age 年龄,count(*) 人数,round(count(*)/(select count(*) from emp),2)*100||'%' 百分比 from emp
group by wh,age
题2,
SQL> create table scores
2 ( teacher_id number (2) ,
3 student_id number (2) ,
4 course varchar2(20) ,
5 score number(3)) ;
Table created.
SQL>
SQL> insert into scores values (1,1,'数学' , 80);
1 row created.
SQL> insert into scores values (1,2,'数学' , 50);
1 row created.
SQL> insert into scores values (2,3,'英语' , 61);
1 row created.
SQL> insert into scores values (2,4,'英语' , 59);
1 row created.
SQL> commit;
Commit complete.
select t1.teacher_id ,t1.course , t2.pass_student pass_number , to_char(t2.pass_student /t1.all_student *100 )|| '%' pass_ratio from
( select teacher_id ,course , count(*) all_student
from scores group by teacher_id ,course ) t1 ,
( select teacher_id , course , count(*) pass_student
from scores where score > 60 group by teacher_id ,course ) t2
where t1.teacher_id =t2.teacher_id and t1.course = t2.course ;
TEACHER_ID COURSE PASS_NUMBER PASS_RATIO
---------- -------------------- ----------- -----------------------------------------
1 数学 1 50%
2 英语 1 50%