Sql sever 中的Group by 句子的运用

group by 从字面意思上来看的话就是根据一定的规则进行分组。

那么在sql语句的运用中,group by语句 用于结合合计函数(聚合函数),根据一个或多个列的结果集进行分组。

由此得知,如果sql语句中出现了聚合函数,并且需要查询出来,那么基本上都必须要用到group by。

而且,group by 后必须要跟上所有不是聚合函数的字段。

比如说:建立三个表T_Member,T_Lesson,T_Score

create table T_Member
(
 Mid char(10),
 MName nvarchar(20),
)

create table T_Lesson
(
 LId char(10),
 LName nvarchar(30)
)

create table T_Score
(
 [SId] int identity,
 MId char(10),
 LID char(10),
 Score int
)

sql语句为:查询出学生的姓名,Id,和平均分。

select M.Name,M.Mid,AVG(S.Score) from T_Member as M,T_Score as S where M.Mid=S.Mid

group by M.Name,M.Mid

order by AVG(S.Score) desc

这里如果M.Name或者M.Mid少了一个就会出现错误。

当在分组的时候需要加上条件的话,就需要用having。因为,where无法与聚合函数一起使用。

例如:查询出平均分大于70分的人。

select M.Name,M.Mid,AVG(S.Score) from T_Member as M,T_Score as S where M.Mid=S.Mid

group by M.Name,M.Mid

having AVG(S.Score)>70

order by AVG(S.Score) desc

了解了group by 句子之后,

总结出两点:

1.sql语句中出现聚合函数,那么就要用到group by

2.当需要对聚合函数的字段做有条件的查询的时候就要在group by 后面用到having

 

posted @ 2015-10-14 11:25  CreamKay  阅读(182)  评论(0)    收藏  举报