什么叫及格率?是全部课程的及格率,还是分科?
还有总分300以上的人数还是什么?
你这个是要在一行里表示,还是分着表示,你自己也没描述清楚啊
我的疑问如一楼所说的。还有:只有三科,总分有的在300以上,那么单科的满分不只是100分吧,可能是120,150。所以无法确定的你及格率。
另外:此语句只能分开写,因为所显示行数不一样
---如果你的表里只有一个班级,那么可以去掉where 后面语句
select count(*) as '考试人数' from tb where 班级='1'
select avg(语文) as '语文平均分' from tb where 班级='1'
select avg(数学) as '数学平均分' from tb where 班级='1'
select avg(英语) as '英语平均分' from tb where 班级='1'
select * from tb where 语文>=80 and 数学>=80 and 英语>=80 and 班级='1' ---如果只查名字, 则可以 把* 替换为 名字 as '每科'>=80
select * from tb where 语文>=90 and 数学>=90 and 英语>=90 and 班级='1' ---如果只查名字, 则可以 把* 替换为 名字 as '每科'>=90
select min(语文) as '语文最低分' ,min(数学)as '数学最低分' ,min(英语) as '英语最低分' from tb where 班级='1'
select max(语文) as '语文最高分' ,max(数学)as '数学最高分' ,max(英语) as '英语最高分' from tb where 班级='1'
select 名字 as '总分300以上名字' from tb where (语文+数学+英语)>300 and 班级='1'
select 名字 as '总分250--300以上名字' from tb where (语文+数学+英语) between 250.001 and 300 and 班级='1'--between包含边缘,所以用250.001
select 名字 as '总分200--250以上名字' from tb where (语文+数学+英语) between 200 and 250 and 班级='1'
select max(row_num() over (partition 班级 order by 名字)) as '考试人数' from tb group by 班级
union all
select avg(语文) as '语文平均分' from tb group by 班级
union all
select avg(数学) as '数学平均分' from tb group by 班级
union all
select avg(英语) as '英语平均分' from tb group by 班级
union
select count(decode(语文,>=60,名字)) /count(*) from tb group by 班级
...