按各科平均成绩从低到高和及格率的百分数从高到低顺序

 这道题其实也很简单,我把数据弄到数据库里调试了好一会才做出来的

 

用到了前面一道题学到的通过select自己创建一个表拿来用的方法。

然后我一开始把课程号误以为是SId,卡了好久。

这道题其实不需要course表,因为题目要的是课程号和对应的该课程的平均分和及格率。

另外要注意 排序规则是 按照及格百分率从高到低再按照平均分从低到高排序的。

我首先用select语句创建了一个辅助表,为的是把一个课程的及格的人数和该课程总人数求出来,用于最外层计算及格百分率。其中还查了CId是为了把自己创建的t表和sc表通过连起来。

 这里我测试了自己创建的t表,可以正确查出每个课程的及格人数和总人数。

然后我们把t表拿到来用,通过 (t.jihe / t.num)*100获得及格百分数。

注意最后的排序

即可

 代码:

select sc.CId 课程号,avg(score) 平均成绩,(t.jige/t.num)*100 及格百分数
from sc,(
    select CId,count(case when score>=60 then 1 end) jige,count(*) num
    from sc
    group by CId
) t
where t.CId = sc.CId
group by t.CId
order by 及格百分数 desc,平均成绩 

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值