简介 目录 评价 推荐
  • 斯巴达汉子 2022-01-30

    分组函数会自动忽略空值

    NVL函数使分组函数无法忽略空值


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


    nvl(comm,0) 

    如果comm不为空,返回comm

    如果是空,返回0,就不会返回空


    *******************************************************


    SQL> select sum(sal)/count(*) 一,sum(sal)/count(sal) 二,avg(sal) 三

      2  from emp;


            一         二         三

    ---------- ---------- ----------

    2073.21429 2073.21429 2073.21429


    SQL> select sum(comm)/count(*) 一,sum(comm)/count(comm) 二,avg(comm) 三

      2  from emp;


            一         二         三

    ---------- ---------- ----------

    157.142857        550        550


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


      COUNT(*) COUNT(COMM)

    ---------- -----------

            14           4


    SQL> select * from emp;


         EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

    ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

          7369 SMITH      CLERK           7902 17-12月-80            800                    20

          7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30

          7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30

          7566 JONES      MANAGER         7839 02-4月 -81           2975                    20

          7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30

          7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30

          7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10

          7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20

          7839 KING       PRESIDENT            17-11月-81           5000                    10

          7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30

          7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20


         EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

    ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

          7900 JAMES      CLERK           7698 03-12月-81            950                    30

          7902 FORD       ANALYST         7566 03-12月-81           3000                    20

          7934 MILLER     CLERK           7782 23-1月 -82           1300                    10


    已选择14行。


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


      COUNT(*) COUNT(NVL(COMM,0))

    ---------- ------------------

            14                 14

    0赞 · 0采集
  • 渺渺叼叼 2021-08-18

    null会导致计算错误,需要使用nvl函数转为非空值

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

    注意:sum(comm)/count(*):统计的是所有人的平均值(含该项为null的人员)

    sum(comm)/count(comm)&avg(comm)是统计comm非空的人员平均数

    0赞 · 0采集
  • _余音未散 2021-08-08
    分组函数会自动过滤空值
    例子:平均工资
    select sum(sal)/count(*) , sum(sal)/count(sal)  ,   avg(sal)  from emp ; 

    • count(*) 会包含空值的个数
    • 分组函数会自动过滤掉空值
    • nvl函数  使得分组函数不忽略空值
    • nvl(comm,0)   这个函数的意思是 当该字段为空的时候返回第二个参数,当字段不为空 返回他本身

    • 这个函数可用于自增的输入nvl(max(sno),0))+1  最大值加一   可用于插入数据的编号
    0赞 · 0采集
  • weixin_慕仔1070220 2021-05-24

    6.

    0赞 · 0采集
  • 慕九州州 2021-05-10

    nvl(a列,0),若a列有值则返回a列,否则返回0,即:将空值转换为0http://img4.mukewang.com/609808020001482705880166.jpg

    0赞 · 0采集
  • 慕九州州 2021-04-29
    count(*)不会忽略空值,count(具体列名)只会统计非空
    截图
    0赞 · 0采集
  • zycsyd 2020-08-01

    avg(comm)=sum(comm)/count(comm)

    avg(nvl(comm,0))=sum(comm)/count(*)

    nvl(comm,0) 为空时返回0不为空时返回实际值


    0赞 · 0采集
  • qq_财神_4 2020-02-27

    NVL函数忽视"虑空"功能;其实是一个替补函数

    截图
    0赞 · 0采集
  • qq_慕标5384168 2020-02-27

    使用分组函数3

    1、分组函数与空值

    ·分组函数会自动忽略空值

    ·举例1:统计员工的平均工资

    select sum(sal)/count(*) 一,sum(sal)/count(sal) 二,avg(sal) 三 from emp;

    ·统计员工的平均奖金

    select sum(comm)/count(*) 一, sum(comm)/count(comm) 二,avg(comm) 三 from emp;

    2、在分组函数中使用NVL函数

    *注意:NVL函数使分组函数无法忽略空值

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


    0赞 · 2采集
  • qq_影子_49 2020-02-24

    分组函数自动忽略结果中的空值

    要使空值不被忽略,使用nvl函数  nul(列名,返回值)(列为空就返回设置的返回值,不为空直接返回列中的值)

    0赞 · 1采集
  • Hee33 2019-11-29

    sun(comm)/count(*)=>count(*)包含没奖金的,表示加上空值的奖金字段

    sun(comm)/count(comm)=>count(comm)不包含没奖金的,表示不加上空值的奖金字段,如果要加上空字段,count(nvl(comm,0),nvl表示空则把奖金的字段的值设置为0

    avg(comm) =>不包含没奖金的,表示不加上空值的奖金字段,

    0赞 · 0采集
  • 慕粉2136255539 2019-08-13
    count(*). count(comm)值不一定相等 count(comm)只计算有值的。 如果要两个值相等,需用到NVL()
    截图
    0赞 · 0采集
  • 慕无忌754632 2019-08-01

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

    nvl()函数


    0赞 · 1采集
  • 慕设计9074761 2019-06-23

     

    NVL(表达式1,表达式2)
    如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。 该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。

    nvl使分组函数无法忽略空值

    count(nvl(a,0))当第一个参数为空的时候,返回第二个参数

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


    截图
    0赞 · 2采集
  • 慕前端0191614 2019-05-31

    /**********************************************
    select deptno,wm_concat(ename)  from emp group  by deptno;
    select deptno 部门号,wm_concat(ename)  部门中员工的姓名 from emp group  by deptno;
    set linesize 200
    col 部门中员工的姓名 for a60
    **********************************************/
    统计员工的平均工资:
    /**********************************************
    select sum(sal)/count(*) 一,sum(sal)/count(sal) 二,avg(sal) 三、from emp;
    **********************************************/
    /**********************************************
    select sum(comm)/count(*) 一,sum(comm)/count(comm) 二,avg(comm) 三、from emp;
    **********************************************/
    select count(*),count(comm) from emp;


    0赞 · 0采集
  • 慕慕9591940 2019-05-20
    分组函数不忽略空值
    截图
    0赞 · 0采集
  • Amousy 2019-03-27

    分组函数会自动滤掉空值,可使用nvl函数屏蔽分组函数的滤空功能,nvl(arg1,arg2),单第一个参数为空则返回第二个自参数的值。

    1赞 · 0采集
  • qq_知一_0 2019-03-22
    oracle的分组函数会过滤空值,建议➕NVL赋值
    截图
    0赞 · 0采集
  • qq_星_20 2019-03-11

    分组函数

    avg,sum

    select avg(sal),sum(sal) from emp ;

    min,max

    select min(sal),max(sal) from emp ;

    count(...) 会自动忽略掉空值,如果不想忽略,可以使用关键字nvl

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

    https://img4.mukewang.com/5c866de40001b46104590270.jpg

    wm_concat ----行转列

    https://img.mukewang.com/5c866f970001e87a06690272.jpg

    0赞 · 0采集
  • weibo_吉祥物mz_0 2019-01-09

    直接使用avg分组函数则会忽略所查询字段中的null值,nvl函数可使分组函数无法忽略null值:avg(nvl(n,0)),第一个参数为空时返回第二个参数;

    截图
    0赞 · 1采集
  • weibo_fate自身难保_0 2018-12-16

    分组函数会自己过滤掉控制,所以count的话是计算出不包含空的数目,所以要统计的时候可以使用*或者是唯一性列,计算平均值的时候如果有空值也要用nvl或者使用sum和count来计算,因为avg也是会忽略掉空值的。

    0赞 · 0采集
  • 慕妹9209972 2018-12-10

    NVL函数:使函数无法忽略空值;

    0赞 · 0采集
  • 慕瓜9266100 2018-11-14

    nvl使分组函数无法忽略空值

    count(nvl(a,0))当第一个参数为空的时候,返回第二个参数

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

    0赞 · 0采集
  • 慕斯卡0326606 2018-09-27

    分组函数计算时会自动过滤掉空值。

    NVL是Oracle中的滤空函数,使用NVL函数使分组函数无法忽略空值

    select count(nvl(comn,0))from emp;

    0赞 · 0采集
  • qq_惊鸿一瞥_0 2018-09-02
    nvl可以使计算空,的总数
    截图
    0赞 · 0采集
  • qq_惊鸿一瞥_0 2018-09-02
    如果有空,总数就不包含空分那一组。忽略空值,取非空总数
    截图
    0赞 · 0采集
  • 浪去 2018-06-15
    使用count函数计算某列的数量时不会算上为空的字段
    截图
    0赞 · 0采集
  • 小光头 2018-05-21

    nvl()把空值转换成一个非空的值

    0赞 · 0采集
  • JerryWangmz 2018-05-16

    nvl使分组函数无法忽略空值

    0赞 · 0采集
  • Xavie 2018-05-08

    nvl函数是分组函数无法忽略空值

    截图
    0赞 · 0采集
数据加载中...
开始学习 免费