mysql查找最高分最低分_sql查询最高分、最低分和平均分语句

时间:2025-03-22 07:12:46

sql 查询最高分、最低分和平均分语句

//我们要用就以学生成绩为实例吧

/*

结构

学生表

Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别

--2.课程表

Course(C#,Cname,T#) --C# --课程编号,Cname 课程名称,T# 教师编号

*/

查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率

--及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90

--方法1

select # [课程编号], [课程名称],

max() [最高分],

min() [最低分],

cast(avg() as decimal(18,2)) [平均分],

cast((select count(1) from SC where C# = # and score >= 60)*100.0 / (select count(1) from SC where C# = #) as decimal(18,2)) [及格率(%)],

cast((select count(1) from SC where C# = # and score >= 70 and score < 80 )*100.0 / (select count(1) from SC where C# = #) as decimal(18,2)) [中等率(%)],

cast((select count(1) from SC where C# = # and score >= 80 and score < 90 )*100.0 / (select count(1) from SC where C# = #) as decimal(18,2)) [优良率(%)],

cast((select count(1) from SC where C# = # and score >= 90)*100.0 / (select count(1) from SC where C# = #) as decimal(18,2)) [优秀率(%)]

from Course m , SC n

where # = #

group by # ,

order by #

--方法2

select # [课程编号], [课程名称],

(select max(score) from SC where C# = #) [最高分],

(select min(score) from SC where C# = #) [最低分],

(select cast(avg(score) as decimal(18,2)) from SC where C# = #) [平均分],

cast((select count(1) from SC where C# = # and score >= 60)*100.0 / (select count(1) from SC where C# = #) as decimal(18,2)) [及格率(%)],

cast((select count(1) from SC where C# = # and score >= 70 and score < 80 )*100.0 / (select count(1) from SC where C# = #) as decimal(18,2)) [中等率(%)],

cast((select count(1) from SC where C# = # and score >= 80 and score < 90 )*100.0 / (select count(1) from SC where C# = #) as decimal(18,2)) [优良率(%)],

cast((select count(1) from SC where C# = # and score >= 90)*100.0 / (select count(1) from SC where C# = #) as decimal(18,2)) [优秀率(%)]

from Course m

order by #

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网