group by 子句中用 rollup 、cube以及用grouping()函数
2012-12-22 16:20
477 查看
1.带有rollup和cube操作符的Group By 解析
rollup 按分组的第一个列进行统计和最后的小计
cube 按分组的所有列的进行统计和最后的小计
2.grouping()函数
该函数可以接受一列,如果列值为空,返回1,否则为0 ,grouping()函数只能在使用 rollup 和 cube 的查询中使用,因为这两个函数在统计小计的时候,除值之外的列
都为空,所以在需要在返回空值的地方显示某个值时,非常有用。例如(借助于decode()函数):
SELECT DECODE(GROUPING(FIRST_NAME), 1, 'All_employee', FIRST_NAME) AS EMP_NAME,
SUM(SALARY) AS EMP_SALARY
FROM EMPLOYEES
GROUP BY ROLLUP(FIRST_NAME)
3.grouping sets 子句
使用grouping sets 子句可以只返回小计记录( 总计也不返回,如果想带有总结,那么可以用grouping_id()函数,具体使用再查资料)。例如:
SELECT FIRST_NAME, JOB_ID, SUM(SALARY) AS EMP_SALARY
FROM EMPLOYEES
GROUP BY GROUPING SETS(FIRST_NAME, JOB_ID)
1.求汇总值的时候,可以直接用rollup或cube并借助于grouping()、decode()函数进行。
select decode(grouping(division_id), 1, 'All divid', division_id) a,
decode(grouping(job_id), 1, 'total divid', job_id) b,
sum(salary)
from employees2
group by cube(division_id, job_id);
rollup 按分组的第一个列进行统计和最后的小计
cube 按分组的所有列的进行统计和最后的小计
2.grouping()函数
该函数可以接受一列,如果列值为空,返回1,否则为0 ,grouping()函数只能在使用 rollup 和 cube 的查询中使用,因为这两个函数在统计小计的时候,除值之外的列
都为空,所以在需要在返回空值的地方显示某个值时,非常有用。例如(借助于decode()函数):
SELECT DECODE(GROUPING(FIRST_NAME), 1, 'All_employee', FIRST_NAME) AS EMP_NAME,
SUM(SALARY) AS EMP_SALARY
FROM EMPLOYEES
GROUP BY ROLLUP(FIRST_NAME)
3.grouping sets 子句
使用grouping sets 子句可以只返回小计记录( 总计也不返回,如果想带有总结,那么可以用grouping_id()函数,具体使用再查资料)。例如:
SELECT FIRST_NAME, JOB_ID, SUM(SALARY) AS EMP_SALARY
FROM EMPLOYEES
GROUP BY GROUPING SETS(FIRST_NAME, JOB_ID)
1.求汇总值的时候,可以直接用rollup或cube并借助于grouping()、decode()函数进行。
select decode(grouping(division_id), 1, 'All divid', division_id) a,
decode(grouping(job_id), 1, 'total divid', job_id) b,
sum(salary)
from employees2
group by cube(division_id, job_id);
相关文章推荐
- group by后加rollup子句的用法以及与cube和grouping sets子句的区别
- group by ()函数汇总之group by rollup()、group by cube()、grouping()
- Group By 多个分组集小结 --GROUPING SETS,GROUP BY CUBE,GROUP BY ROLLUP,GROUPING(),GROUPING_ID()
- SQLSERVER中的ALL、PERCENT、CUBE关键字、ROLLUP关键字和GROUPING函数
- group by分组函数之rollup与cube用法
- Oracle中group by 的扩展函数rollup、cube、grouping sets
- Oracle group by 基本及的拓展 ROLLUP, CUBE, GROUPING 功能and GROUPING 集合
- group by(rollup ,cube ,grouping sets) and grouping
- Oracle group by 基本及的拓展 ROLLUP, CUBE, GROUPING 功能and GROUPING 集合
- rollup、cube、grouping、rank、dense_rank、row_number函数简介
- 在GROUP BY子句中的CUBE与ROLLUP是否完全一样?
- Hive分析函数之grouping sets、cube、rollup学习
- group by分组函数之rollup与cube用法
- group by分组函数之rollup与cube用法
- Oracle分组函数 rollup、cube、grouping sets、grouping、grouping_id
- postgresql 的 group by 之 grouping sets/rollup/cube
- ORACLE的分组函数ROLLUP,CUBE,GROUPING
- Oracle中group by 的扩展函数rollup、cube、grouping sets
- group by的rollup、cube、grouping、grouping sets 的用法浅析
- OLAP函数系列1:SqlServer中分组函数GROUP BY 的扩展:all, cube,roolup与grouping