连接查询和分组查询
比如要查询每个年级的总成绩,一个年级一个年级的输入会显得代码冗余,这时用group by进行每个年级依次查询,代码会精简很多
分组查询语句:
比如:要计算每个年级各有多少人?代码如下
select count(*)as 人数,Grade as 年级
from student
group by Grade
Group by 的作用:
对查询数据进行分组。
根据上述代码,在select 中加入聚合函数后,普通列如果不使用group by 则爆红,会提醒使用group by 。
如果不使用 group by ,能运行出来的话,我猜想运行结果应该是
所以使用group by 可以算出来每个年级的人数
注意:order by 对已经查询的信息进行排序。如果我们没有用order by进行排序,并且group by后面有多个列名,那么默认按照group by
最后一个列名进行排序,如果想要对某一列进行排序,可以用 order by 。(普遍使用group by前都要加order by)
分组查询:
语句:
Question: 查询表(Student)中地址中包括上海,总人数超过十五的年级
select count(*) as 人数,Grade as 年级
from student
where address like '%上海%'
having count(*)>15
where 和 having 的区别:
where 对普通列条件的限制
having 对聚合函数条件的限制