Oracle group by高级用法对比效果(ROLLUP、GROUPING SETS、CUBE),今天主要跟大家演示一下,在同一组数据的情况下,每个SQL的执行结果。
一:普通的group by
二:加上ROLLUP
三:加上CUBE
四:加上GROUPING SETS
总结如下:
ROLLUP | GROUP BY ROLLUP(A,B,C) | 首先对(A,B,C)进行GROUP BY,然后对(A,B)进行GROUP BY,然后是(A)进行GROUP BY, 最后对全表进行GROUP BY操作 |
CUBE | GROUP BY CUBE(A,B,C) | 首先对(A,B,C)进行GROUP BY,然后依次对(A,B)、(A,C)、(A)、(B,C)、(B)、(C)进行GROUP BY,最后对全表进行GROUP BY操作。 |
GROUPING SETS | GROUP BY GROUPING SETS(A,B,C) | 依次对(C)、(B)、(A)进行GROUP BY。 |