数据库之Group by的使用

Group by根据一个或多个列对结果集进行分组,例如聚合函数 (比如 SUM) 常常需要添加 Group by语句用于分组。
注:本文使用的是MySQL数据库

1、先看个例子
例如这里有张员工表(person):

这里写图片描述

通过执行下面的语句查找各个部门工资的总和:
select dept,sum(salary) from person group by dept;

这里写图片描述

小结:
(1)Group by语法可以根据给定数据列的每个成员对查询结果进行分组,这里的分组就是将一个“数据集合”划分成若干个“小块”,然后对这些“小块”进行数据处理。最终得到按一个分组汇总的结果表。

(2)SELECT子句后面的字段一般是聚合函数或者是Group by 后面的。

(3)Group by 一般和sum、max、avg等聚合函数一起使用。

2、再看个Group by子句和HAVING子句联合使用的例子

例如:我们查找平均工资大于7000的部门的最高工资:
执行SQL:
select dept,max(salary)
from person
group by dept
having avg(salary)>7000;

这里写图片描述

小结:
一般我们在Group by子句后面增加一个HAVING子句,来获得满足条件的分组的返回结果。HAVING可对限定条件进行分组, HAVING子句后可以通过一个或多个用AND和OR作为连接条件。

在达梦数据库中,可以使用GROUP BY子句来实现类似于MySQL的Group_Concat(expr)函数的功能。GROUP BY子句用于根据指定的列对结果进行分组,并且可以结合聚合函数来对每个分组进行计算。在达梦数据库中,可以使用GROUP BY子句和GROUP_CONCAT函数来实现类似的功能。GROUP_CONCAT函数用于将每个分组中的多个值合并为一个字符串,并且可以使用特定的分隔符进行分隔。 例如,以下是在达梦数据库使用GROUP BY和GROUP_CONCAT函数将多个值合并为一个字符串的示例: SELECT column1, GROUP_CONCAT(column2 SEPARATOR ',') FROM table GROUP BY column1; 这个查询将根据column1列对表中的数据进行分组,并将每个分组中的column2列的多个值合并为一个字符串,使用逗号作为分隔符。 需要注意的是,在达梦数据库中,语法和函数名称可能会有所不同,因此具体的语法和函数名称可能需要根据实际情况进行调整。可以参考达梦数据库的官方文档或咨询相关支持来获取更详细的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [达梦数据库迁移之group by 替换](https://blog.csdn.net/weixin_44907192/article/details/123328932)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [达梦数据库中的GROUP BY语句](https://blog.csdn.net/Oraclesand/article/details/126870609)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值