SQL聚合函数的疑惑

NicholasNC 发布于 2015/12/30 10:59
阅读 107
收藏 0
SELECT nvl(sum(max(nmP0)),0) as nmSumP0
  from tableName
 group by chFloor
----------------------------------------------------------
select sum(nmSumP0)
from (SELECT nvl(max(nmP0),0) as nmSumP0
        from tableName
       group by chFloor)

上面两条sql语句的结果居然是一样的!!!

我的目的是选出每个chFloor的nmP0的最大值,然后将这些最大值加在一起,用第二条sql语句就完全没问题,第二条sql的做法和我的思路一致。

但是,我不解的是第一条sql语句的结果居然和第二条一样,这完全出乎我的意料。

想了大半天,会不会真相是这样的——

在第一条sql中,group by chFloor只是对max(nmP0)起了作用,选出每个chFloor中nmP0的最大值,选出来之后,sum就没有使用group by chFloor了,直接把每个chFloor的最大值加在一起?

不肯定,求大神解惑。



加载中
返回顶部
顶部