SQL的复杂排序问题

请问我应该怎样修改这里的sql语句可以使它第一次就可以输出表:“学号”+“姓名”+“各科成绩”最后再添一列“不及格科目数量”并按从大到小排列,没有的让数量为零。“姓名这个列在学生基础信息表里",我试了一下发现不好调用学生基础信息表添加姓名列和在创建一个新列“不及格科目数量”,求解答!

img


studentsbasic_inf"”,学生成绩表是"studentsscore_inf"。

img

select base.学号,base.姓名,s.C语言程序设计,s.高等数学A1,s.大学英语A1,s.大学体育A1,ISNULL(tbsum.不及格科目数量,0)不及格科目数量
from studentsscore_inf s
left join studentsbasic_inf base on base.学号=s.学号
left join (select 学号,count(1)不及格科目数量 from(
select 学号 from studentsscore_inf where C语言程序设计<60 union all
select 学号 from studentsscore_inf where 高等数学A1<60 union all
select 学号 from studentsscore_inf where 大学英语A1<60 union all
select 学号 from studentsscore_inf where 大学体育A1<60 
)t  group by 学号 )tbsum  on tbsum.学号=s.学号
order by tbsum.不及格科目数量 desc

学生基础信息表和test表根据学号关联查询,就能拿到姓名字段、不及格科目数量。
再跟studentsscore_inf表关联查询,能获得对应的成绩字段。

那你结果的这个学号跟studentsbasic_inf表关联查询

img


大致这样

select a.学号,a.姓名,tmp.不及格科目数量 from studentsbasic_inf a left join (
with test as
 (xxxxx)
select 学号, count(学号) 不及格科目数量 from test group by学号
ORDER BY不及格科目数量 DESC )tmp  on tmp.学号=a.学号

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632