【Oracle】【MySQL】通过SQL语句实现小计、合计

xixuefeng MySQL, MySQL-DEV, Oracle, SQL&Function 2017-09-18 10:11:04 380 次浏览 【Oracle】【MySQL】通过SQL语句实现小计、合计已关闭评论

做统计报表开发时,如果对SQL语句了解的不够全面和彻底的话,那么无论是表结构设计还是表的复用都是有所欠缺的。通过一个例子我们测试一下。

样例数据:

本测试中,样例数据库如下:

1)Oracle,采用SCOTT用户下的emp表

2)MySQL,采用 http://www.xxf-home.net/archives/727

测试数据如下(以MySQL为例):

需求:统计【每个部门】中的【每个岗位】的【工资总和】,并统计出,每个【部门的工资小计】及【公司的工资合计】

以上需求非常常见,那么怎么做呢?

1:如果不知道怎么更优的实现需求,那么以实现结果为目的方式,可以采用如下方法:

显然,上述SQL实现了统计需求(这个SQL是标准的SQL,所以Oracle和MySQL都是适用的,需要注意的是:Oracle在排序时,null为最大;MySQL则认为null为最小,所以同样的SQL,如果存在null值,那么排序后是不同的)。

但是,你会发现,同样的表,访问了多次,无论是性能还是书写方式上都是不可取的。

2:Oracle的实现方式

3:MySQL呢?当然直接运行Oracle的SQL是不行的,实际上MySQL也有自己的解决方案,在MySQL的官方文档上搜ROLLUP,即可看到相关的用法,如下:

4:小结

作者本人对MySQL了解有限,MySQL在小计合计方面,差不多也就这样了,没有其他什么变化(通过后续的工作和学习发现不足,作者再完善)。Oracle在小计合计方面还有很多的变化及其他的增强子句,见:http://www.xxf-home.net/archives/735

 

回顶部