本文主要是介绍sql查询班级不及格、良、优秀的人数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题
一个班级的成绩表,如果0-60分是不及格,60-90分是良,90-100分是优秀。那么不及格、良、优秀的人数各位多少?
解决思路
如果用group by来做的话,group by只能按照某列相同值进行分组。所以需要先用case when then将0-60分变成’不及格’,60-90分变成’良’,90-100分变成’优秀’。这个过程相当于给组起名字,其实普通的group by语句分的组也都有名字,即group by之后的列的值。
select level,count(*) as count from
(SELECT id,name,score,case when score<60 then '不及格' when score<90 then '良' else '优秀' end as level FROM test.scores) a
group by level
子查询里面将不同分数段分成三组,外层查询用group by语句统计每个组的数据条数。
这篇关于sql查询班级不及格、良、优秀的人数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!