sql一个视图同时获得三个SQL语句查询结果
表如下nameclasschineseenglishyeartimea一(1)班77992008b一(2)班88772008c一(1)班45662008d一(3)班667...
表如下
name class chinese english yeartime
a 一(1)班 77 99 2008
b 一(2)班 88 77 2008
c 一(1)班 45 66 2008
d 一(3)班 66 77 2007
这是一个各年度期考的学生成绩表,制作一个视图,使他能得所有班各年度的及格率,班级的及格率是指当科超过60(含60分)的学生人数除以该班参加考试的总人数.也说是说计算出各年度chinese的及格人数,计算出各年度english的及格人数,计算出各年度班级参加人数,用及格人数除以班级参考人数
视图显示如下
class yeartime chinesenumber englishnumber chinesepass
一(1)班 2008 30(假设及格人数,) 25(假设及格人数,) 0.94
一(2)班 2007 44(假设及格人数,) 43(假设及格人数,) 0.98
englishpass
0.96
0.87
chinesepassy是语文及格率,english是英语的及格率 展开
name class chinese english yeartime
a 一(1)班 77 99 2008
b 一(2)班 88 77 2008
c 一(1)班 45 66 2008
d 一(3)班 66 77 2007
这是一个各年度期考的学生成绩表,制作一个视图,使他能得所有班各年度的及格率,班级的及格率是指当科超过60(含60分)的学生人数除以该班参加考试的总人数.也说是说计算出各年度chinese的及格人数,计算出各年度english的及格人数,计算出各年度班级参加人数,用及格人数除以班级参考人数
视图显示如下
class yeartime chinesenumber englishnumber chinesepass
一(1)班 2008 30(假设及格人数,) 25(假设及格人数,) 0.94
一(2)班 2007 44(假设及格人数,) 43(假设及格人数,) 0.98
englishpass
0.96
0.87
chinesepassy是语文及格率,english是英语的及格率 展开
1个回答
展开全部
Create view newview as
select class,yeartime,
sum(case when chinese>=60 then 1 else 0 end)as chinesenumber,
sum(case when english>=60 then 1 else 0 end)as englishnumber,
sum(case when chinese>=60 then 1 else 0 end)*1.00/count(*) as chinesepass,
sum(case when english>=60 then 1 else 0 end)*1.00/count(*) as englishpass
from table1 group by class,yeartime order by class,yeartime
提示:乘以1.00是为了转换类型,否则0.98会显示为0
select class,yeartime,
sum(case when chinese>=60 then 1 else 0 end)as chinesenumber,
sum(case when english>=60 then 1 else 0 end)as englishnumber,
sum(case when chinese>=60 then 1 else 0 end)*1.00/count(*) as chinesepass,
sum(case when english>=60 then 1 else 0 end)*1.00/count(*) as englishpass
from table1 group by class,yeartime order by class,yeartime
提示:乘以1.00是为了转换类型,否则0.98会显示为0
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询