SQL中的分组集

简介: SQL基础知识

分组集的定义

是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用"UNION ALL",计算多个结果集的并集。


分组集种类

SQL Server的分组集共有三种 GROUPING SETS, CUBE, 以及ROLLUP, 其中 CUBE和ROLLUP可以当做是GROUPING SETS的简写版


GROUPING SETS

GROUPING SETS子句允许你指定多个GROUP BY选项。增强了GROUP BY的功能。

可以通过一条SELECT语句实现复杂繁琐的多条SELECT语句的查询。并且更加的

高效,解析存储一条SQL于语句


GROUP SETS示例

我们以Customers表为例,其内容如下:

20.jpg

我们先分别对城市和省份进行分组,统计出他们的数量

SELECT 城市,NULL 省份,COUNT(城市) FROM Customers
GROUP BY 城市
UNION ALL
SELECT NULL,省份,COUNT(省份) FROM Customers
GROUP BY 省份

结果为:

21.jpg

再使用GROUPING SETS来统计

SELECT 
城市,
省份,
COUNT(客户ID) 数量
FROM Customers
GROUP BY GROUPING SETS (城市,省份)

结果如下

22.jpg

其实上下两个结果是一样的,只是UNION ALL不排序,而GROUPING SETS增加了排序。这样不仅减少了代码,而且这样的效率会比UNION ALL的效率高。通常GROUPING SETS使用在组合分析中。


ROLLUP

ROLLUP也是GROUPING SETS的一种简略写法,我们举例说明。

我们先使用GROUPING SETS的多层组合

SELECT 
省份,
城市,
COUNT(1) 数量
FROM Customers
GROUP BY GROUPING SETS (
省份,(省份,城市)
)

其结果为:

23.jpg

我们使用ROLLUP可以这样写

SELECT 
省份,
城市,
COUNT(客户ID) 数量
FROM Customers
GROUP BY 省份,城市 WITH ROLLUP

其结果为:

24.jpg

我们来解读一下ROLLUP的作用,其作用是对每个列先进行一次分组,并且对第一列的数据在每个组内还进行一次汇总,最后对所有的数据再进行一次汇总,所以相比GROUPING SETS会多了个所以数据的汇总。这个在对组内进行聚合时是经常使用到的。


CUBE

而CUBE相比ROLLUP就更多一个维度了,我们还是距离说明。

SELECT 
省份,
城市,
COUNT(客户ID) 数量
FROM Customers
GROUP BY 省份,城市 WITH CUBE

结果如下:

25.jpg

在ROLLUP的基础上,还会将第一列每组的汇总数据额外显示在最后。


总结

分组集类似于Excel的透视图,可以对各类数据进行组内计算,这里不止可以进行数量统计,也可以进行求和,最大最小值等操作。是我们在进行数据分析时候经常使用到的一组功能。

相关文章
|
1月前
|
SQL
sql server模糊查询、分组
sql server模糊查询、分组
12 1
|
4月前
|
SQL 大数据 HIVE
每天一道大厂SQL题【Day10】电商分组TopK实战
每天一道大厂SQL题【Day10】电商分组TopK实战
31 0
|
3月前
SQL-分组查询
SQL-分组查询
|
3月前
|
SQL 自然语言处理
leecode-SQL-1484-按日期分组销售产品
leecode-SQL-1484-按日期分组销售产品
27 0
|
3月前
|
SQL
四、SQL分组查询
四、SQL分组查询
32 0
|
3月前
|
SQL 自然语言处理 数据挖掘
「SQL面试题库」 No_115 按日期分组销售产品
「SQL面试题库」 No_115 按日期分组销售产品
|
4月前
|
关系型数据库 MySQL 数据库
Mysql数据库 6.SQL语言 分组、分页查询
Mysql数据库 6.SQL语言 分组、分页查询
60 2
|
5月前
|
SQL 关系型数据库 MySQL
sql处理重复的列,更好理清分组和分区
sql处理重复的列,更好理清分组和分区
46 0
|
6月前
|
SQL 关系型数据库 Serverless
深入理解 SQL 分组查询
SQL 是结构化查询语言(Structured Query Language)的缩写,是用于管理关系型数据库的标准语言。在 SQL 中,查询是其中最重要的部分之一,通过查询,我们可以从数据库中检索所需的数据。分组查询是 SQL 查询中的一项重要功能,它允许我们对数据进行分组、聚合和汇总,以便更好地理解数据的特征和趋势。 在本文中,我们将深入探讨 SQL 中的分组查询,包括其基本语法、常用聚合函数、分组筛选条件、多重分组、分组排序等方面的内容。无论您是初学者还是有一定 SQL 基础的开发者,都将从本文中获得有关 SQL 分组查询的详细信息。
384 0
|
8月前
|
SQL 数据库
数据库——SQL通过某字段的取值范围进行分组汇总
数据库——SQL通过某字段的取值范围进行分组汇总