oracle中group by的高级应用

GROUP BY的语法:

select [filed1,filed2,...]聚合函数(filed),[grouping(filed),][grouping_id(filed1,filed2)]

from tabel_name

where condition

[group by {rollup|cube} (filed1,filed2) ]

[having condition]

[order by filed]

1.where和having的区别:

where和having都是用来筛选数据,但是where是针对原数据进行筛选,而having子句是针对汇总后的结果进行筛选

2.扩展用法:

a.使用rollup操作符:‘rollup’的意思是‘卷起,汇总’,它可以使在括号中的字段,按右到左的顺序分别froup后显示,类似我们用多个group by语句,然后union all起来;

b.使用cube操作符:cube意思是立方,使用该操作符可以对操作符内的字段,进行遍历组合汇总,将操作符内的字段进行不同的组合来进行分组;

c.使用grouping(filed)函数:

用来判断某行数据是不是按照rollup或cube进行汇总,如果判断的该参数为null则返回1,否则返回0

猜你喜欢

转载自logking2340.iteye.com/blog/2158657