济宁专业做网站,网站建设中 html,大数据技术是学什么的,wordpress手机插件6学习笔记#xff0c;原文来自http://blog.csdn.net/robinjwong/article/details/24845125 创建分组 - GROUP BY 分组是在SELECT语句的GROUP BY子句中建立的。它的作用是通过一定的规则将一个数据集划分成若干个小的区域#xff0c;然后针对若干个小区域进行数据处理。SELECT子…学习笔记原文来自http://blog.csdn.net/robinjwong/article/details/24845125 创建分组 - GROUP BY 分组是在SELECT语句的GROUP BY子句中建立的。它的作用是通过一定的规则将一个数据集划分成若干个小的区域然后针对若干个小区域进行数据处理。SELECT子句中的列名必须为分组列或列函数列函数对于GROUP BY子句定义的每个组各返回一个结果。 一些规定 GROUP BY 子句可以包含任意数目的列这使得能对分组进行嵌套为数据分组提供更细致的控制如果在GROUP BY子句中嵌套了分组数据将在最后规定的分组上进行汇总GROUP BY子句中列出的每个列都必须是检索列或有效的表达式。如果在SELECT中使用表达式则必须在GROUP BU子句中指定相同的表达式不能使用别名大多数SQL实现不允许GROUP BU列带有长度可变的数据类型如文本或备select departmentid, departmentname from basicdepartment group by departmentid;注型字段除聚集计算语句外SELECT语句中的每个列都必须在GROUP BY子句中给出如果分组列中具有NULL值则NULL将作为一个分组返回。如果列中有多行NULL值它们将分为一组GROUP BY子句必须出现在WHERE子句之后ORDER BY子句之前过滤分组 - HAVING 除了能用GROUP BY分组数据外SQL还允许过滤分组规定包括哪些分组排除哪些分组。例如可能想要列出至少有两个订单的所有顾客为了得出这种数据必须基于完整的分组而不是个别的行进行过滤。 WHERE过滤行而HAVING过滤分组。HAVING支持所有WHERE操作符HAVING子句中能使用聚集函数。WHERE在数据分组前进行过滤。HAVING在数据分组后进行过滤。WHERE排除的行不包括在分组中。 分组 V.S. 排序 - GROUP BY V.S. ORDER BY ORDER BYGROUP BY排序产生的输出分组行但输出可能不是分组的顺序任意列都可以使用只可能使用选择列或表达式列而且必须使用每个选择列表达式不一定需要如果与聚集函数一起使用列则必须使用 千万不要仅依赖GROUP BY排序数据。 示例 下表学生号SNO课程名PNO成绩GRADE 1 YY 901 SX 981 YW 952 YY 922 SX 912 YW 893 YY 963 SX 883 YW 854 YY 884 SX 894 YW 95 1. 显式90分以上学生的课程名和成绩 不涉及分组计算数据块是原始表就行 select * from sc where GRADE 90 2. 显式每个学生的成绩在90分以上的各有多少门 涉及到分组计算单独计算的数据快为每个学生数据块整体没有要求因此没有having但是提前需要用where过滤select SNO, count(*) from sc where GRADE 90 group by SNO 3. 至少有两门课程在90分以上的学生号及90分以上的课程数 过滤分组 (涉及到分组计算同时数据库也有要求) select SNO, count(*) from sc where GRADE 90 group by SNO having count(*) 2 4. 选出平均成绩大于90分且语文必须在95以上的学生 涉及到分组计算且之前有过滤 select SNO, avg(GRADE) from sc where SNO in (select SNO from sc where PNO YW and GRADE 95) group by SNO having avg(GRADE) 90 转载于:https://www.cnblogs.com/coskaka/p/7193360.html