数据库数据查询——复杂的单表查询——group by子句,having子句,聚集函数的使用。
三者之间的用法及关系:
group by子句将查询结果按某一列或多列的值分组,值相等的为一组。
而对查询结果分组的目的是为了细化聚集函数的作用对象。
分组后聚集函数将作用于每一个组,即每一组都有一个函数值。
如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则可以使用having短语指定筛选条件
例题:列出有二门以上课程优秀学生的学号及优秀门数。(优秀即分数在80及80分以上)
(1)首先使用group by子句对优秀学生的学号的查询结果分组。
select
sc.sno 学号,count(0) 优秀门数
from sc
where grade>=80
group by sc.sno
查询结果:
(2)再使用having子句筛选出优秀成绩达两门以上的学生。
select
sc.sno 学号,count(0) 优秀门数
from sc
where grade>=80
group by sc.sno
having count(0)>2;
筛选结果:
sc表上篇文章已给出创建代码
网址链接:https://blog.csdn.net/qq_51896676/article/details/120938672?spm=1001.2014.3001.5501