GROUPING运算符
- ROLLUP (MySQL仅支持ROLLUP)
- CUBE:将 GROUP BY 子句中聚合键的“所有可能的组合” 的汇总结果集中到一个结果中
- GROUPING SETS:用于从中取出个别条件对应的不固定的结果
只使用GROUP BY子句和聚合函数无法同时得出小计和合计,若想要同时得到,可以使用GROUPING运算符
- 通常的做法是分别计算出合计行和按照商品种类进行汇总的结果,然后通过 UNION ALL 连接在一起,但是繁琐、 DBMS 内部处理成本非常高
- UNION ALL和 UNION的不同之处在于它不会对结果进行排序,因此UNION ALL的性能更好
ROLLUP——同时得出合计和小计,一次计算出不同聚合键组合的结果
- 该操作能够得到像从小计到合计这样,从最小的聚合级开始,聚合单位逐渐扩大的结果
- 使用ROLLUP时组合的个数是 n + 1
- ROLLUP的结果一 定包含在CUBE的结果之中
-- 特定MySQL语句
SELECT product_type, SUM(sale_price) AS sum_price
FROM Product
GROUP BY product_type WITH ROLLUP;
- GROUP BY () :没有聚合键,也就相当于没有 GROUP BY 子句(这时会得到全部数据的合计行的记录),该合计行记录称为超级分组记录(super group row),把它当作未使用 GROUP BY 的合计行来理解,超级分组记录默认使用NULL作为聚合键。
- GROUP BY (product_type)
- GROUP BY (product_type, regist_date)