前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >SQL中Group By的使用,以及一些特殊使用方法

SQL中Group By的使用,以及一些特殊使用方法

作者头像
allsmallpig
发布于 2021-02-25 02:32:17
发布于 2021-02-25 02:32:17
2.7K00
代码可运行
举报
文章被收录于专栏:allsmallpi博客allsmallpi博客
运行总次数:0
代码可运行

转载自 https://www.cnblogs.com/jingfengling/p/5962182.html 

1、概述

“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。

2、原始表

3、简单Group By

示例1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 类别, sum(数量) as 数量之和
from A
group by 类别

返回结果如下表,实际上就是分类汇总。

4、Group By 和 Order By

示例2
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 类别, sum(数量) AS 数量之和
from A
group by 类别
order by sum(数量) desc

返回结果如下表

在Access中不可以使用“order by 数量之和 desc”,但在SQL Server中则可以。

5、Group By中Select指定的字段限制

示例3
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 类别, sum(数量) as 数量之和, 摘要
from A
group by 类别
order by 类别 desc

示例3执行后会提示下错误,如下图。这就是需要注意的一点,在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。

6、Group By All

示例4
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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可以写成

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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:求各组平均值
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 类别, avg(数量) AS 平均值 from A group by 类别;
示例6:求各组记录数目
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 类别, count(*) AS 记录数 from A group by 类别;
示例7:求各组记录数目

8、Having与Where的区别

  • where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
  • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。
示例8
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 类别, sum(数量) as 数量之和 from A
group by 类别
having sum(数量) > 18
示例9:Having和Where的联合使用方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 类别, SUM(数量)from A
where 数量 gt;8
group by 类别
having SUM(数量) gt; 10

9、Compute 和 Compute By

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from A where 数量 > 8

执行结果:

示例10:Compute
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select *
from A
where 数量>8
compute max(数量),min(数量),avg(数量)

执行结果如下:

compute子句能够观察“查询结果”的数据细节或统计各列数据(如例10中max、min和avg),返回结果由select列表和compute统计结果组成。

示例11:Compute By
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 compute by 的使用 https://www.cnblogs.com/Gavinzhao/archive/2010/07/12/1776107.html

where、having之间的区别和用法 http://blog.csdn.net/jdjh1024/article/details/76647866

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/01/31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL数据库,从入门到精通:第八篇——MySQL聚合函数实战探究:优化SELECT过程助力高效查询
在实际的业务应用中,聚合查询是最为常见的需求之一。MySQL的聚合函数允许我们对数据进行求和、平均、最大值、最小值、计数等统计操作,从而得到有用的信息。本文将全面讲解MySQL中的聚合函数,包括基础的聚合函数和进阶的分组、HAVING等,同时也会介绍SELECT的执行过程,帮助读者更好地理解SQL语句的执行过程。
默 语
2024/11/20
2140
MySQL数据库,从入门到精通:第八篇——MySQL聚合函数实战探究:优化SELECT过程助力高效查询
【数据库】MySQL:从基础到高级的SQL技巧
上篇文章是对MySQL的简单介绍和基本操作,接下来会对MySQL数据查询最更进一步的讲解。
易辰君
2024/11/07
1680
常用SQL查询语句,值得回看不要错过,好记性不如多看看!
SELECT * FROM tb_stu WHERE sname like ‘刘%’
TestOps
2022/04/04
3K0
常用SQL查询语句,值得回看不要错过,好记性不如多看看!
学习SQL【4】-聚合与排序
随着表中记录(数据行)的不断积累,存储数据逐渐增加,有时我们可能希望计算出这些数据的合计值或者平均值等,这个时候就需要使用SQL语句的汇总操作等方法。 一:对表进行聚合排序 1:聚合函数 通过SQL对数据进行某种操作或计算时需要使用函数。SQL有五种常用的函数: ● COUNT:计算表中数据的行数(记录数)。 ● SUM:计算表中数值列中数据的合计数。 ● AVG:计算表中数值列中数据的平均值。 ● MAX:计算表中数值列中数据的最大值。 ● MIN:计算表中数值列中数据的最小值。 如上所示,用于汇总的函
爱吃西瓜的番茄酱
2018/04/04
2.7K0
通俗易懂的学会:SQL窗口函数
窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。
猴子数据分析
2023/12/14
6370
通俗易懂的学会:SQL窗口函数
mysql group by 分组统计
在MySQL中,GROUP BY语句通常与聚合函数(如COUNT(), SUM(), AVG(), MAX(), MIN()等)一起使用,以便对一组记录进行分组统计。
oktokeep
2025/03/28
830
GROUP BY与COUNT用法详解
在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数, 例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。
全栈程序员站长
2022/08/24
2.7K0
GROUP BY与COUNT用法详解
sql中的 where 、group by 和 having 用法解析
–如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术
Twcat_tree
2022/11/30
13K0
数据库
脏读:当事务A正在访问数据并且做了修改(‘工资2000元’改成‘工资3000元’),但是还没来得及提交,这是事务B来访问数据并且使用了该数据(‘工资2000元’)
大学里的混子
2019/03/06
1.3K0
SQL基本查询语句(二)
无论是基础查询还是条件查询,最终的结果都是显示了所有字段。即:包含了id, class_id, name, gender, score。如果我们只关心name字段,那么查询语句应该按照如下格式:
zy010101
2020/12/25
7210
Mysql 常用命令记录与数据导入导出
前一阵在写很多sql及类sql语句,发现自己的记忆力可以说是相当烂了,上午刚查过插入语句怎么写,下午就忘记了需要重新查,,而且隐隐约约的有点强迫症??只要记得不是特别清晰,就需要去重新查,看,记一遍,十分浪费时间,因此在这里将自己用到的sql语句记下来,方便后续的查找!!
呼延十
2019/07/01
3.1K0
一文读懂SQL中的Aggregate(聚合) 函数和Scalar(标准)函数
SQL 拥有很多可用于计数和计算的内建函数。大致分为两类:SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。SQL Scalar 函数基于输入值,返回一个单一的值。
言程序
2024/07/01
3340
【数据库设计和SQL基础语法】--查询数据--SELECT语句的基本用法
通过灵活组合以上元素,SELECT语句实现了对数据库中数据的灵活、高效的检索和处理,是SQL中最基础、重要的命令之一。理解和熟练掌握SELECT语句的使用对数据库查询操作至关重要。
喵叔
2023/12/11
2K0
软件测试|弄懂GROUP BY看这一篇文章就够了
在SQL(结构化查询语言)中,GROUP BY子句是一个强大的工具,用于对查询结果进行分组和聚合操作。通过使用GROUP BY子句,可以根据指定的列或表达式对数据进行分组,并对每个分组应用聚合函数,从而得到更有意义的查询结果。本文将深入介绍SQL中的GROUP BY子句,包括其语法、用途以及示例。
霍格沃兹测试开发Muller老师
2023/08/20
2860
Oracle数据库学习笔记 (四 —— select 从入门到放弃 【下】)
Oracle 数据库查询专题 (select * from emmmm 80 T)
Gorit
2021/12/09
1.2K0
group by 和聚合函数
group by 的基本用法                                                                                                                                                                                                          group by做为分组来使用,后面为条件,可以有多个条件,条件相同的为一组,配
Ryan-Miao
2018/03/13
2.1K0
group by 和聚合函数
SQL中GROUP BY语句介绍
本文主要介绍 SQL(Structured Query Language)中 GROUP BY 语句的相关知识,同时通过用法示例介绍 GROUP BY 语句的常见用法。
Twcat_tree
2022/12/05
1.6K0
SQL中GROUP BY语句介绍
「SAP ABAP」OPEN SQL(七)【GROUP BY | HAVING | ORDER BY】
💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 ---- 💅文章概要: 各位小伙伴们大家好呀!今天继续SAP ABAP系列文章的讲解,本节带来的内容是OPEN SQL中GROUP BY语句和HAVING语句以及ORDER BY语句的介绍,希
THUNDER王
2023/03/20
2.8K0
「SAP ABAP」OPEN SQL(七)【GROUP BY | HAVING | ORDER BY】
十、GROUP BY 和 HAVING 的使用
这时我们就可以使用 group by 语句来解决这类需求。从字面上来理解,group by 表示根据某种规则对数据进行分组,他必须配合聚合函数进行使用,对数据进行分组后可以进行 count、sum、avg、max 和 min 运算。语法如下:
喵叔
2021/06/25
1.1K0
看一遍就理解:group by详解
日常开发中,我们经常会使用到group by。亲爱的小伙伴,你是否知道group by的工作原理呢?group by和having有什么区别呢?group by的优化思路是怎样的呢?使用group by有哪些需要注意的问题呢?本文将跟大家一起来学习,攻克group by~
捡田螺的小男孩
2022/02/10
4.5K0
看一遍就理解:group by详解
推荐阅读
相关推荐
MySQL数据库,从入门到精通:第八篇——MySQL聚合函数实战探究:优化SELECT过程助力高效查询
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验