Group by,Grouping,Rollup

Group By : 语句用于结合合计函数,根据一个或多个列对结果集进行分组(最基本)。
Grouping :指示是否聚合 GROUP BY 列表中的指定列表达式。 在结果集中,如果 GROUPING 返回 1 则指示聚合(其实就是一个函数);

返回 0 则指示不聚合。 如果指定了 GROUP BY,则 GROUPING 只能用在 SELECT 列表、HAVING 和 ORDER BY 子句中。

ROLLUP :生成简单的 GROUP BY 聚合行以及小计行或超聚合行,还生成一个总计行(就是一个统计功能)。

具体例子可以看:http://www.cnblogs.com/li-peng/p/3298303.html,仁兄写的很全面。

`GROUP BY GROUPING SETS` 是 MySQL 中用于多维度分组聚合的语法,它可以同时对多个字段进行分组,以生成多维度的聚合数据。 `GROUP BY GROUPING SETS` 的语法如下: ```sql SELECT 列1, 列2, ..., 聚合函数1(列), 聚合函数2(列), ... FROM 表名 GROUP BY GROUPING SETS((列1, 列2, ...), (列1, ...), ..., ()) ``` 其中,`GROUPING SETS` 后面的括号中可以指定多个聚合维度,每个聚合维度用括号括起来,不同的聚合维度之间用逗号分隔。括号中的字段可以是表中的任意字段,也可以是表达式或者常量。括号中的字段数量不限,但是字段的顺序必须与 `SELECT` 子句中的顺序一致。 在使用 `GROUP BY GROUPING SETS` 时,如果某个聚合维度为空(即对应的括号中没有任何字段),则表示对所有的分组结果进行汇总(类似于 `WITH ROLLUP`)。如果同时使用多个聚合维度,则会生成多维度的聚合数据。 下面是一个示例,展示如何使用 `GROUP BY GROUPING SETS` 计算一张订单表的不同日期、不同用户、不同商品的销售数量和销售额: ```sql SELECT 日期, 用户, 商品, COUNT(*) AS 销售数量, SUM(金额) AS 销售额 FROM 订单表 GROUP BY GROUPING SETS((日期, 用户, 商品), (日期, 用户), (日期), ()) ORDER BY 日期, 用户, 商品; ``` 在上面的查询中,我们同时对日期、用户和商品进行了分组,并分别计算了销售数量和销售额。聚合维度包括: - `(日期, 用户, 商品)`:按照日期、用户、商品三个维度进行聚合 - `(日期, 用户)`:按照日期、用户两个维度进行聚合 - `(日期)`:按照日期一个维度进行聚合 - `()`:对所有结果进行汇总 运行上述查询后,可以得到一个多维度的聚合结果,包括日期、用户、商品、销售数量和销售额。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值