📜  mysql 多重分组 - SQL (1)

📅  最后修改于: 2023-12-03 15:03:06.425000             🧑  作者: Mango

MySQL 多重分组 - SQL

在MySQL中,分组是一种强大的工具,可以根据一个或多个列的值对数据进行分组和汇总。在数据集太大而无法一次访问所有行时,分组成为必要的技术。MySQL允许对分组后的结果再次进行分组,即多重分组。

语法
SELECT [列名], [列名]... FROM [表名] GROUP BY [列名], [列名]... WITH ROLLUP;
  • 列名 - 需要进行汇总的列名
  • 表名 - 需要进行汇总的表名
  • GROUP BY - 列名,通过该列名进行分组,支持多列分组
  • WITH ROLLUP - 对分组后的结果再次进行分组,返回总计行
示例
SELECT department, status, COUNT(*) as cnt 
FROM employee 
GROUP BY department, status WITH ROLLUP;

此示例将在employee表中,根据部门和状态列进行分组,并计算每个组中的行数。WITH ROLLUP选项将基于部门和状态列生成子汇总和一个Grand Total记录。

| department | status | cnt | |------------|-----------|-----| | HR | Contract | 2 | | HR | Full Time | 1 | | IT | Contract | 1 | | IT | Full Time | 2 | | IT | NULL | 3 | | Sales | Full Time | 1 | | Sales | NULL | 1 | | NULL | NULL | 5 |

解释

结果表显示了按部门和状态分组的结果以及一个总计行。

  • sum(2) + sum(1) = 3,部门HR的合计行。
  • sum(1) + sum(2) = 3,部门IT的合计行。
  • sum(1) = 1,部门销售的合计行。
  • 合计行总数=2+1+1+1=5。
结论

多重分组语句可以在一次查询中汇总多个列的值,并提供总计行。了解如何使用多重分组,可以轻松处理任何汇总信息。