mysql with rollup

阿里云服务器

MySQL的WITH ROLLUP是一种用于在GROUP BY子句中生成汇总行的特殊选项。它可以通过在SELECT语句中指定ROLLUP选项来启用。使用WITH ROLLUP选项可以将查询结果按照指定的列进行分组,并且在每个分组的末尾添加一行汇总数据。

例如,假设我们有一个名为orders的表,包含以下数据:

sql复制代码+------+-------+--------+  | year | month | amount |  +------+-------+--------+  | 2020 | 1     | 100    |  | 2020 | 2     | 200    |  | 2021 | 1     | 300    |  | 2021 | 2     | 400    |  +------+-------+--------+

我们可以使用WITH ROLLUP选项将数据按照年和月进行分组,并生成汇总行:

sql复制代码SELECT year, month, SUM(amount) FROM orders GROUP BY year, month WITH ROLLUP;

这将生成以下结果:

yaml复制代码+------+-------+-------------+  | year | month | SUM(amount) |  +------+-------+-------------+  | 2020 | 1     | 100         |  | 2020 | 2     | 200         |  | 2020 | NULL  | 300         |  | 2021 | 1     | 300         |  | 2021 | 2     | 400         |  | 2021 | NULL  | 700         |  | NULL | NULL  | 1000        |  +------+-------+-------------+

注意到在每个分组的末尾都添加了一行汇总数据,其中NULL表示该列的所有值都被汇总。使用ROLLUP选项可以方便地生成分组数据的汇总信息。