SQL高级知识V2——分组集

简介: 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表为例,其内容如下:

1.png

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

100.png结果为:

2.png

再使用GROUPING SETS来统计10.png

3.png


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


ROLLUP

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

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

101.png

其结果为:

4.png

我们使用ROLLUP可以这样写


102.png

其结果为:

5.png

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


CUBE

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

103.png

结果如下:

6.png

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


批注

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

相关文章
|
1月前
|
SQL
sql server模糊查询、分组
sql server模糊查询、分组
12 1
|
4月前
|
SQL
SQL 的 AND、OR 和 NOT 运算符:条件筛选的高级用法
SQL的AND运算符用于根据多个条件筛选记录,确保所有条件都为TRUE才返回记录。下面是AND运算符的基本语法:
52 1
|
4月前
|
SQL 大数据 HIVE
每天一道大厂SQL题【Day10】电商分组TopK实战
每天一道大厂SQL题【Day10】电商分组TopK实战
31 0
|
6月前
|
SQL 监控 关系型数据库
【MYSQL高级】Mysql找出执行慢的SQL【慢查询日志使用与分析】
【MYSQL高级】Mysql找出执行慢的SQL【慢查询日志使用与分析】
456 0
|
6月前
|
SQL 存储 关系型数据库
【MYSQL高级】Mysql 表的七种连接方式【附带练习sql】
【MYSQL高级】Mysql 表的七种连接方式【附带练习sql】
94 0
|
1月前
|
SQL 存储 数据可视化
10个高级的 SQL 查询技巧
10个高级的 SQL 查询技巧
|
3月前
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
89 0
|
6月前
|
SQL 存储 关系型数据库
【MYSQL高级】Mysql的SQL性能分析【借助EXPLAIN分析】
【MYSQL高级】Mysql的SQL性能分析【借助EXPLAIN分析】
73 0
|
3月前
SQL-分组查询
SQL-分组查询
|
3月前
|
存储 SQL 关系型数据库
SQL联结表及高级联结
SQL联结表及高级联结
28 0