ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 追忆一道数据库开发的面试题

追忆一道数据库开发的面试题

原创 Linux操作系统 作者:lihy114 时间:2013-09-03 17:01:05 0 删除 编辑

还清晰的记着当时绞尽脑汁想了很多的办法,用了union以及求和,很长的一条sql,还是觉得实现不了

原来是用到group by rollup的函数实现

select nvl(to_char(id),'小计') as id,sum(XCLB) from hl83

group by rollup(ID)

order by ID

结果

 

Rollupcube是对group by分组函数的一个扩展

OracleGROUP BY语句除了最基本的语法外,还支持ROLLUPCUBE语句。如果是Group by  ROLLUP(A, B, C)的话,首先会对(ABC)进行GROUP BY,然后对(AB)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。

 

      如果是GROUP BY CUBE(A, B, C),则首先会对(ABC)进行GROUP BY,然后依次是(AB)(AC)(A)(BC)(B)(C),最后对全表进行GROUP BY操作。 grouping_id()可以美化效果。除了使用GROUPING函数,还可以使用GROUPING_ID来标识GROUP BY的结果。

rollup.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28803801/viewspace-772108/,如需转载,请注明出处,否则将追究法律责任。

下一篇: oracle的闪回查询
请登录后发表评论 登录
全部评论

注册时间:2013-08-08

  • 博文量
    54
  • 访问量
    152694