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

浙公网安备 33010602011771号