视频分享网站怎么做的,昆明做百度网站电话,珠海网站建设企业,南宁seo公司最近在学习SQL Server相关知识#xff0c;一直不知道怎么使用GROUP BY语句#xff0c;经过研究和练习#xff0c;终于明白如何使用了#xff0c;在此记录一下同时添加了一个自己举的小例子#xff0c;通过写这篇文章来加深下自己学习的效果#xff0c;还能和大家分享下一直不知道怎么使用GROUP BY语句经过研究和练习终于明白如何使用了在此记录一下同时添加了一个自己举的小例子通过写这篇文章来加深下自己学习的效果还能和大家分享下同时也方便以后查阅一举多得 一、GROUP BY GROUP BY语句用来与聚合函数(aggregate functions such as COUNT, SUM, AVG, MIN, or MAX.)联合使用来得到一个或多个列的结果集。 语法如下 SELECT column1, column2, ... column_n, aggregate_function (expression) FROM tables WHERE predicates GROUP BY column1, column2, ... column_n; 举例 比如说我们有一个学生表格(student)包含学号(id)课程(course)分数(score)等等多个列我们想通过查询得到每个学生选了几门课程此时我们就可以联合使用COUNT函数与GROUP BY语句来得到这一结果 SELECT id, COUNT(course) as numcourse FROM student GROUP BY id 因为我们是使用学号来进行分组的这样COUNT函数就是在以学号分组的前提下来实现的通过COUNT(course)就可以计算每一个学号对应的课程数。 注意 因为聚合函数通过作用于一组数据而只返回一个单个值因此在SELECT语句中出现的元素要么为一个聚合函数的输入值要么为GROUP BY语句的参数否则会出错。 例如对于上面提到的表格我们做一个这样的查询 SELECT id, COUNT(course) as numcourse, score FROM student GROUP BY id 此时查询便会出错错误提示如下 Column ‘student.score is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. 出现以上错误的原因是因为一个学生id对应多个分数如果我们简单的在SELECT语句中写上score则无法判断应该输出哪一个分数。如果想用score作为select语句的参数可以将它用作一个聚合函数的输入值如下例我们可以得到每个学生所选的课程门数以及每个学生的平均分数 SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore FROM student GROUP BY id 二、HAVING HAVING语句通常与GROUP BY语句联合使用用来过滤由GROUP BY语句返回的记录集。 HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。 语法 SELECT column1, column2, ... column_n, aggregate_function (expression)FROM tablesWHERE predicatesGROUP BY column1, column2, ... column_nHAVING condition1 ... condition_n; 同样使用本文中的学生表格如果想查询平均分高于80分的学生记录可以这样写 SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore FROM student GROUP BY id HAVING AVG(score)80; 在这里如果用WHERE代替HAVING就会出错 参考资料 http://www.w3schools.com/sql/sql_groupby.asp http://www.techonthenet.com/sql/group_by.php http://www.w3schools.com/sql/sql_having.asp http://www.techonthenet.com/sql/having.php http://msdn.microsoft.com/en-us/library/ms180199.aspx 转载于:https://www.cnblogs.com/ITGirlXiaoXiao/archive/2011/12/19/2293435.html