连接查询和分组查询

 

 

 比如要查询每个年级的总成绩,一个年级一个年级的输入会显得代码冗余,这时用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 对聚合函数条件的限制

 

 

 

 

 

posted @ 2020-04-20 20:42  多多🙂nice  阅读(139)  评论(0编辑  收藏  举报