union all
select * from stud88
union all
select * from stud89
order by 年级
将3个班级的合并结果(按grade排序)插入到临时表 #students里面
用 cube 汇总数据
cube 运算符生成的结果集是多维数据集。多维数据集是事实数据的扩展,事实数据即记录个别事件的数据。扩展建立在用户打算分析的列上。这些列被称为维。多维数据集是一个结果集,其中包含了各维度的所有可能组合的交叉表格。
cube 运算符在 select 语句的 group by 子句中指定。该语句的选择列表应包含维度列和聚合函数表达式。group by 应指定维度列和关键字 with cube。结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。
例如,一个简单的表 inventory 中包含:
item color quantity
-------------------- -------------------- --------------------------
table blue 124
table red 223
chair blue 101
chair red 210
下列查询返回的结果集中,将包含 item 和 color 的所有可能组合的 quantity 小计:
select item, color, sum(quantity) as qtysum
from inventory
group by item, color with cube
下面是结果集:
item color qtysum
-------------------- -------------------- --------------------------
chair blue 101.00
chair red 210.00
chair (null) 311.00
table blue 124.00
table red 223.00
table (null) 347.00
(null) (null) 658.00
(null) blue 225.00
(null) red 433.00
我们着重考查下列各行:
chair (null) 311.00
这一行报告了 item 维度中值为 chair 的所有行的小计。对 color 维度返回了 null 值,表示该行所报告的聚合包括 color 维度为任意值的行。
table (null) 347.00
这一行类似,但报告的是 item 维度中值为 table 的所有行的小计。
(null) (null) 658.00
这一行报告了多维数据集的总计。item 和 color 维度的值都是 null,表示两个维度中的所有值都汇总在该行中。
(null) blue 225.00
(null) red 433.00
这两行报告了 color 维度的小计。两行中的 item 维度值都是 null,表示聚合数据来自 item 维度为任意值的行。