在Oracle中用GROUPING SETS分组自定义

  当你与COUNT和SUM这类总计函数一起使用GROUP BY语句时,你一般得不到多级总数。GROUP BY中每个唯一的列组合生成一个总数,但这些总数不会“累加”到更高一级的总数中。

  要实现这一点,你可以用GROUP BY ROLLUP或GROUP BY CUBE替代GROUP BY,不过它们会生成所有可能的总数,而你可能不需要全部总数。对GROUP BY CUBE而言,将会生成2^n组总数,这里的n是GROUP BY中列的数目。

  查看下面的查询,它使用了SH样本模式:
引用:
SELECT prod_id, cust_id, channel_id, SUM(quantity_sold)

FROM sales

WHERE cust_id < 3

GROUP BY CUBE (prod_id, cust_id, channel_id)