1.2分组函数与空值

        现实中每个人都有工资,但是努力工作但人可以得到奖金。工资常有而奖金不常有。是故讲分组函数与空值。

        举个栗子。哇咔咔。

                统计员工的平均工资【工资人人有份哦】

                select    sum(sal)/count(*)    from    emp;

                select    sum(sal)/count(sal)    from    emp;

                select    avg(sal)    from    emp;

                以上SQL的结果都是一样的哦。

                统计员工的平均奖金【奖金不是人人都有的哦】

                select    sum(comm)/count(*)    a    ,    select    sum(comm)/count(comm)    b    ,    select  avg(comm)    c    from    emp;

                结果是b、c相同与a不同,原因就是因为comm这一列中包含空值。也就是说count(*)和  count(sal)是不一样的。

                        select    count(*),count(comm)    from    emp;

                        count(*)是有14条,而count(comm)只有4条

                我们可以得到一个结论就是分组函数是会自动忽略空值的

                        select    count(*),count(nvl(comm,0))    from    emp;

                        nvl函数的作用,如果第一个函数为空的话返回第二个函数,如果不为空返回第一个函数自己

                以后要根据实际需要决定分组函数要不要加nvl

你可能感兴趣的:(1.2分组函数与空值)