ROLLUP
- 功能:生成层次化的小计和总计(逐级向上汇总)。
- 例如,按
GROUP BY ROLLUP(a, b)分组,会生成以下结果:(a, b)的明细(a)的小计- 全局总计。
- 例如,按
- 适用场景:需要按层级汇总(如部门→员工→总计)时使用。
- 功能:生成层次化的小计和总计(逐级向上汇总)。
CUBE
- 功能:生成所有可能的组合小计和总计(多维交叉汇总)。
- 例如,按
GROUP BY CUBE(a, b)分组,会生成以下结果:(a, b)的明细(a)的小计(b)的小计- 全局总计。
- 例如,按
- 适用场景:需要多维度的全组合汇总(如部门、地区、产品的交叉统计)。
- 示例
-- 使用 ROLLUP 生成层次化汇总
SELECT department, job, SUM(salary)
FROM employees
GROUP BY ROLLUP(department, job);
-- 使用 CUBE 生成全组合汇总
SELECT department, job, SUM(salary)
FROM employees
GROUP BY CUBE(department, job);SUM函数1. 基础用法
- 作用:计算指定列的总和,通常与
GROUP BY一起使用。 - 语法:
SELECT SUM(column_name) FROM table_name [GROUP BY group_column]; - 示例:
输出:-- 按部门统计销售额总和 SELECT department, SUM(sales) AS total_sales FROM sales_data GROUP BY department;department total_sales HR 50000 IT 75000
2. 处理 NULL 值
SUM会忽略NULL值。-- 如果某行的 sales 为 NULL,该行不计入总和 SELECT SUM(sales) FROM sales_data;
函数4、GROUPING1. 作用
- 标识超级聚合行:当使用
ROLLUP、CUBE或GROUPING SETS时,GROUPING用于区分普通聚合行和超级聚合行(如小计、总计)。 - 返回值:
0:表示该列是普通分组的一部分。1:表示该列是超级聚合行的一部分(如小计或总计)。
2. 语法
SELECT GROUPING(column_name) AS is_aggregated, [其他列], SUM(value_column) AS total FROM table_name GROUP BY ROLLUP/CUBE/GROUPING SETS (group_columns);- 作用:计算指定列的总和,通常与
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




