开发者社区> 游客r426lz522voxi> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

MySQL基础知识——分组GROUP BY

简介: MySQL基础知识
+关注继续查看

GROUP BY 作用
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。


 GROUP BY 语法

SELECT column_name, 

aggregate_function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name;


示例数据表

我们以表customers和orders为例:

30.jpg

表customers

31.jpg

表orders


GROUP BY实例

查询居住在各个城市的客户分别有多少个。我们可以这样写SQL:


SELECT 城市,COUNT(*) AS 客户数量
FROM Customers
GROUP BY 城市


结果为:

32.jpg

从上面我们可以看到,GROUP BY 将城市名称相同的客户聚集在一起,然后通过COUNT函数计算出了他们的数量。

在具体使用GROUP BY子句前,需要知道一些重要的规定。

  • GROUP BY子句可以包含任意数目的列。这使得能对分组进行嵌套,为数据分组提供更细致的控制。
  • GROUP BY子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。
  • 除聚集计算语句外, SELECT语句中的每个列都必须在GROUP BY子句中给出。
  • 如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。
  • GROUP BY子句必须出现在WHERE子句之后, ORDER BY子句之前。


对照上面的实例,我们可以发现GROUP BY的用法满足上面的规定:除了聚合函数COUNT,城市列出现在SELECT语句和GROUP BY子句中。


GROUP BY 多表连接

查询每个城市有多少个订单产生。我们可以这样写SQL:


SELECT c.城市,COUNT(o.订单ID) AS 订单数量
FROM Customers c
LEFT JOIN Orders o ON c.客户ID=o.客户ID
GROUP BY c.城市


结果为:


33.jpg

因为没有北京和杭州的用户购买产品,所以订单数量为0


GROUP BY排重

GROUP BY在进行分组的时候,会自动排除重复数据。对城市和省份进行分组,但不进行任何聚合操作:

SELECT 城市 ,省份
FROM customers
GROUP BY 城市,省份


结果为:

34.jpg

该功能与SQL中的关键字DISTINCT功能相同,但在性能上会有区别,这里不作扩展介绍。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
十、GROUP BY 和 HAVING 的使用
十、GROUP BY 和 HAVING 的使用
59 0
Sqlserver高版本还原到低版本方法(Sqlserver2012到SqlServer2008 R2)(1)
Sqlserver高版本还原到低版本方法(Sqlserver2012到SqlServer2008 R2)(1)
194 0
MySQL之group by
MySQL之group by
39 0
【FastDFS】FastDFS 分布式文件系统的安装与使用,看这一篇就够了!!
有不少小伙伴在实际工作中,对于如何存储文件(图片、视频、音频等)没有一个很好的解决思路。都明白不能将文件存储在单台服务器的磁盘上,也知道需要将文件进行副本备份。如果自己手动写文件的副本机制,那就太麻烦了,这会涉及冗余副本机制、服务器的调度、副本检测、服务器节点检测、文件副本存放策略、网络环境检测等等一系列的难题。了解Hadoop的小伙伴,会自然而然的想到HDFS,
198 0
分布式文件系统如何做?终于有篇文章分布式文件上传讲清楚了
本篇文章详细讲述了分布式项目中文件系统的使用问题,主要通过FastDFS实现分布式系统中的文件管理功能,包括文件存储,文件同步和文件访问。分析了FastDFS的文件系统架构以及上传交互过程和下载交互过程。通过基于DOCKER安装FastDFS的实例讲解了文件系统的相关配置和使用方式。通过这篇文章的讲解,可以学会分布式文件系统FastDFS的执行原理以及具体的使用方式,可以很方便地对分布式系统中各个模块的文件进行统一的管理。
238 0
RDS for MySQL 表和索引优化实战—田杰
RDS for MySQL 表和索引优化实战 --田杰
302 0
阿里云物联网平台IOT Studio绑定域名测试
物联网平台iot studio web可视化开发,完成后需要绑定域名才可访问,绑定的域名需要指向固定域名并做解析
2139 0
阿里云服务器部署Java Web项目和连接MySQL数据库全流程
阿里云服务器部署Java Web项目和连接MySQL数据库全流程
1968 0
RDS for MySQL 大表操作
RDS for MySQL 大表操作
6684 0
569
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载