[SQL挖掘机] - 窗口函数 - 合计: with rollup

介绍:

在sql中,with rollup 是一种用于在查询结果中生成小计和总计的选项。它可以与 group by 子句一起使用,用于在分组查询的结果中添加附加行。

with rollup 的作用是为每个指定的分组列生成小计,并在最后添加一行总计。这样,我们可以方便地获取每个分组的小计以及整体的总计。

用法&举例:

下面是一个示例,用于说明 with rollup 的用法, 假设我们有以下的 sales 表格:

+---------+-------+--------+
| country | region | sales  |
+---------+-------+--------+
| usa     | west  | 100    |
| usa     | east  | 200    |
| usa     | north | 150    |
| canada  | west  | 120    |
| canada  | east  | 180    |
| mexico  | north | 250    |
+---------+-------+--------+

我们可以使用以下查询来生成小计和总计:

select country, region, sum(sales)
from sales
group by country, region with rollup
;

执行上述查询后,将会生成下面的结果集:

+---------+-------+--------+
| country | region | sales  |
+---------+-------+--------+
| canada  | east  | 180    |
| canada  | west  | 120    |
| canada  | null  | 300    |
| mexico  | north | 250    |
| mexico  | null  | 250    |
| usa     | east  | 200    |
| usa     | north | 150    |
| usa     | west  | 100    |
| usa     | null  | 450    |
| null    | null  | 1000   |
+---------+-------+--------+

在结果中,我们可以看到:

  • 在每个分组的小计行中,country 和 region 列包含了分组的值,而 sales 列是该分组的销售总额。
  • 在总计行中,country 和 region 列的值为 null,而 sales 列是整个结果集的销售总额。

使用 with rollup 可以轻松地进行数据的分组和汇总,并获取每个分组的小计和整体的总计。这对于数据分析和报表生成非常方便。

猜你喜欢

转载自blog.csdn.net/qq_40249337/article/details/132049222