【数据库&mysql】group by语句、聚合函数、分组查询

介绍 :

GROUP BY 是 SQL 中用于对数据进行分组汇总的子句,通常与聚合函数一起使用。它允许将数据行按照一个或多个列的值进行分组,并对每个组应用聚合函数,从而生成汇总统计信息。

 

基本语法:

SELECT column1, column2, aggregate_function(column3)
FROM table_name
GROUP BY column1, column2;

column1, column2:这些是按其值对数据行进行分组的列。可以指定一个或多个列。

aggregate_function(column3):这是用于对每个分组应用聚合函数的列。聚合函数可以是 COUNT, SUM, AVG, MAX, MIN 等,用于对分组内的数据进行汇总计算。

table_name:这是从中选择数据的表。

 

工作原理: 

首先,数据行按照 GROUP BY 子句中指定的列的值进行分组。每个不同的组将拥有相同值的列。

然后,对于每个组,应用在 SELECT 子句中定义的聚合函数(如 COUNT, SUM, AVG 等)来计算分组内的值。这将生成一个结果行,其中包括分组的列值和聚合函数的计算结果。

最后,结果集将包括每个组的一个行,其中包括分组列的值和相应的聚合计算结果。

 

对比示例: 

表emp20211150047如下图所示:

 

执行代码1

SELECT SAL, COUNT(*) FROM emp2021150047 GROUP BY SAL;

 代码1结果如下

 

执行代码2

SELECT SAL, COUNT(*) FROM emp2021150047 GROUP BY ENAME;

 代码2结果如下

 

 通过对比是否看出一些差别?看不太明白也没关系,再加一列ENAME就清楚了。

 

 执行代码1 plus

SELECT ENAME,SAL, COUNT(*) FROM emp2021150047 GROUP BY SAL;

 代码1 plus结果如下

 

执行代码2 plus

SELECT ENAME,SAL, COUNT(*) FROM emp2021150047 GROUP BY ENAME;

 代码2 plus结果如下

 现在我们可以很明显的看出来,GROUP BY某一列,则那一列的值不会重复。比如GROUP BY ENAME ,那么不会有两个ALLEN。

而SELECT ENAME,SAL其实就是把,GROUP BY某一列后得到的表,再从中截取而已,如代码1 plus就是在下表中截取的。

 

 和原表进行对比可以发现,SAL为18500的数据有三条,而GROUP BY只会取第一条,其他的只会在COUNT(*)进行+1而不会再次纳入表中。

 (by 归忆)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归忆_AC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值