sql查询问题 查询成绩分布情况

来源:百度知道 编辑:UC知道 时间:2024/06/01 14:06:25
其中:
优秀、良好……各级别的(人数)分布情况及百分比;统计缺考人数;统计不及格、及格人数。大虾们帮帮忙~~~~~~按各门课程查询
select stu_no 学号,cou_no 课程号,grade 成绩,等级=case
when grade>=90 then '优秀'
when grade>=80 then '良好'
when grade>=70 then '中等'
when grade>=60 then '及格'
when grade is null then '缺考'
else '不及格'
end
from sc
这我也会啊,只是不知道能不能把查询结果整到一张表去?

整到一张表:
select 课程,
sum(人数*case 类别 when '优秀' then 1 else 0 end) 优秀人数,sum(人数*case 类别 when '优秀' then 1 else 0 end)/sum(人数)*100 优秀百分比,
sum(人数*case 类别 when '良好' then 1 else 0 end) 良好人数,sum(人数*case 类别 when '良好' then 1 else 0 end)/sum(人数)*100 良好百分比,
sum(人数*case 类别 when '中等' then 1 else 0 end) 中等人数,sum(人数*case 类别 when '中等' then 1 else 0 end)/sum(人数)*100 中等百分比,
sum(人数*case 类别 when '及格' then 1 else 0 end) 及格人数,sum(人数*case 类别 when '及格' then 1 else 0 end)/sum(人数)*100 及格百分比,
sum(人数*case 类别 when '缺考' then 1 else 0 end) 缺考人数,
sum(人数*case 类别 when '不及格' then 1 else 0 end) 不及格人数,
sum(人数*case when 类别 in('优秀','良好','中等','及格') then 1 else 0 end) 及格人数

from (select 课程,count(*) as 人数,‘优秀’ as 类别
from 成绩
where grade>=90
group by 课程
union
select 课程,count(*) as 人数,‘良好’ as 类别
from 成绩
where grade>80 and