1、概述
“Group By”从字面意义上明白就是根据“By”指定的划定规矩对数据举行分组,所谓的分组就是将一个“数据集”划分红若干个“小区域”,然后针对若干个“小区域”举行数据处理。
2、原始表
3、简朴Group By
示例1
select 种别, sum(数量) as 数量之和 from A group by 种别
返回效果以下表,现实上就是分类汇总。
4、Group By 和 Order By
示例2
select 种别, sum(数量) AS 数量之和 from A group by 种别 order by sum(数量) desc
返回效果以下表
在Access中不可以运用“order by 数量之和 desc”,但在SQL Server中则可以。
5、Group By中Select指定的字段限定
示例3
select 种别, sum(数量) as 数量之和, 择要 from A group by 种别 order by 种别 desc
示例3实行后会提醒下毛病,以下图。这就是须要注重的一点,在select指定的字段要么就要包括在Group By语句的背面,作为分组的根据;要么就要被包括在聚合函数中。
6、Group By All
示例4
select 种别, 择要, sum(数量) as 数量之和 from A group by all 种别, 择要
示例4中则可以指定“择要”字段,其缘由在于“多列分组”中包括了“择要字段”,其实行效果以下表
“多列分组”现实上就是就是根据多列(种别+择要)兼并后的值举行分组,示例4中可以看到“a, a2001, 13”为“a, a2001, 11”和“a, a2001, 2”两条纪录的兼并。
SQL Server中虽然支撑“group by all”,但Microsoft SQL Server 的将来版本中将删除 GROUP BY ALL,防止在新的开辟工作中运用 GROUP BY ALL。Access中是不支撑“Group By All”的,但Access中一样支撑多列分组,上述SQL Server中的SQL在Access可以写成
select 种别, 择要, sum(数量) AS 数量之和 from A group by 种别, 择要
7、Group By与聚合函数
在示例3中提到group by语句中select指定的字段必需是“分组根据字段”,其他字段若想出现在select中则必需包括在聚合函数中,罕见的聚合函数以下表:
函数 | 作用 | 支撑性 |
---|---|---|
sum(列名) | 乞降 | |
max(列名) | 最大值 | |
min(列名) | 最小值 | |
avg(列名) | 平均值 | |
first(列名) | 第一条纪录 | 仅Access支撑 |
last(列名) | 末了一条纪录 | 仅Access支撑 |
count(列名) | 统计纪录数 | 注重和count(*)的区分 |
示例5:求各组平均值
select 种别, avg(数量) AS 平均值 from A group by 种别;
示例6:求各组纪录数量
select 种别, count(*) AS 纪录数 from A group by 种别;
示例7:求各组纪录数量
8、Having与Where的区分
where 子句的作用是在对查询效果举行分组前,将不相符where前提的行去掉,即在分组之前过滤数据,where前提中不能包括聚组函数,运用where前提过滤出特定的行。
having 子句的作用是挑选满足前提的组,即在分组以后过滤数据,前提中常常包括聚组函数,运用having 前提过滤出特定的组,也可以运用多个分组规范举行分组。
示例8
select 种别, sum(数量) as 数量之和 from A group by 种别 having sum(数量) > 18
示例9:Having和Where的团结运用方法
select 种别, SUM(数量)from A where 数量 gt;8 group by 种别 having SUM(数量) gt; 10
9、Compute 和 Compute By
select * from A where 数量 > 8
实行效果:
示例10:Compute
select * from A where 数量>8 compute max(数量),min(数量),avg(数量)
实行效果以下:
compute子句可以视察“查询效果”的数据细节或统计各列数据(如例10中max、min和avg),返回效果由select列表和compute统计效果构成。
示例11:Compute By
select * from A where 数量>8 order by 种别 compute max(数量),min(数量),avg(数量) by 种别
实行效果以下:
示例11与示例10比拟多了“order by 种别”和“... by 种别”,示例10的实行效果现实是根据分组(a、b、c)举行了显现,每组都是由改组数据列表和改组数统计效果构成,别的:
compute子句必需与order by子句用一同运用
compute...by与group by比拟,group by 只能获得各组数据的统计效果,而不能看到各组数据
在现实开辟中compute与compute by的作用并非很大,SQL Server支撑compute和compute by,而Access并不支撑
相干文章:
sql group by 语句用法
sql group by语法与实例
相干视频:
SQL意见意义教室
以上就是体系整顿SQL中Group By的用法与Group By多个字段限定的细致内容,更多请关注ki4网别的相干文章!