首页 > Linux操作系统 > Linux操作系统 > 追忆一道数据库开发的面试题
还清晰的记着当时绞尽脑汁想了很多的办法,用了union以及求和,很长的一条sql,还是觉得实现不了
原来是用到group by rollup的函数实现
select nvl(to_char(id),'小计') as id,sum(XCLB) from hl83
group by rollup(ID)
order by ID
结果
Rollup和cube是对group by分组函数的一个扩展
Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是Group by ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。
如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。 grouping_id()可以美化效果。除了使用GROUPING函数,还可以使用GROUPING_ID来标识GROUP BY的结果。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28803801/viewspace-772108/ ,如需转载,请注明出处,否则将追究法律责任。