在正常情况下,所有行的数据不全为空时:
select sum(nvl(1,1)) from dual ;
select nvl(sum(1),1) from dual ;
结果是一样的。
在所有行数据都为空时:
select sum(nvl(null,1)) from dual ;
select nvl(sum(null),1) from dual ;
结果也还是一样。
当查不到数据时:
select sum(nvl(1,1)) from dual where 1<>1;
select nvl(sum(1),1) from dual where 1<>1;
select sum(nvl(null,1)) from dual where 1<>1;
select nvl(sum(null),1) from dual where 1<>1;
可以发现sum在里面和外面结果是不一样的。sum在外面,结果为空,sum在里面结果为1
这是因为sum和nvl的异常处理不一样导致的。
当处理数据时,如果碰到没有数据(注意没有数据不是null)时,sum返回"空",而nvl返回"没有数据"。
所以,当sum在外面时,nvl先返回"没有数据",sum再对"没有数据"做处理,返回结果为"空"。
当sum在里面时,sum先对"没有数据"做处理,返回结果为"空",nvl再对nvl处理,返回结果为1。
分享到:
相关推荐
round((sum(nvl(b.bytes, 0)) - sum(nvl(a.bytes, 0))) / 1024 / 1024, 2) 已经使用M, round(sum(nvl(a.bytes, 0)) / 1024 / 1024, 2) 剩余M, round(sum(c.bytes) / 1021 / 1024, 2) 该用户使用M from ...
sum(nvl(a.bytes,0)) 剩余空间,sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比 from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_id,b.bytes order by b....
NVL(SUM(A.AMOUNT),0) INTO W_ATS_RE_BOOKED_AMT FROM XXXXXXXXX A, ( SELECT B.TRD_NO FROM XXXXXXXXX B WHERE B.CLIENT_CD = W_IN_CLIENT_CD UNION ALL SELECT C.TRD_NO FROM XXXXXXXXX C WHERE...
round(((a.BYTES-nvl(b.BYTES, 0))/a.BYTES)*100,2) "Pct Used", round((1-((a.BYTES-nvl(b.BYTES,0))/a.BYTES))*100,2) "Pct Free" from (select TABLESPACE_NAME, sum(BYTES) BYTES from sys.dba_data_files ...
查询oracle表空间的使用情况 select b.file_id 文件ID, b.tablespace_name 表空间, b.file_name 物理文件名, b.bytes 总字节数, (b.bytes-sum(nvl(a.bytes,0))) 已使用, sum(nvl(a.bytes,0)) 剩余, sum(nvl(a....
正在看的ORACLE教程是:Oracle数据库的空间管理技巧。 在Oracle数据库中,DBA可以通过观测一定的表或视图来了解当前空间的使用...2 a.bytes "Bytes",a.bytes-sum(nvl(b.bytes,0)) "Used", 3 sum(nvl(b.bytes,0)) "Fre
"知 " " " " "利用率 from (select " " " " " " "tablespace_name a1, " " " " " " "sum(nvl(bytes,0)) a2" " " " " " "from dba_free_space " " " " " " "group by " " " " " " "tablespace_name) " " " " " " "a,...
from student_A A full outer join student_B B on A.Uuid = B.Uuid; 1.6.4.3 结果 1.6.4.4 全外连接不支持(+)写法 1.6.5 (+) + 表示补充,即哪个表有加号,这个表就是匹配表。 1.7 运算符 1.7.1 比较 =、>,<,...
SPACE || ‘M’ “SUM_SPACE(M)”, BLOCKS “SUM_BLOCKS”, SPACE – NVL (FREE_SPACE, 0) || ‘M’ “USED_SPACE(M)”, ROUND ( (1 – NVL (FREE_SPACE, 0) / SPACE) * 100, 2) || ‘%’ “USED_
1,数值型函数(abs()、sign()、ceil()、floor()、power()、exp()、round()...); 2,字符型函数(lower()、upper()、lpad()、rpad()、substr()、replace()...);...7,其它函数(decode()、nvl()、nvl2()、least()...);
A.DBWR B.LGWR C. SMON D.PMON 3. 如果要查询数据库中所有表的信息,应当使用下列哪种数据字典视图?( A ) A. DBA视图 B. ALL视图 C. USER视图 D. 动态性能视图 4. 下列哪一项是Oracle数据库中最小的存储分配...
基本涵盖了oracle的各个方面: oracle day3 笔记 外连接: ... 求所有人提成的平均值:select sum(commission_pct)/count(*) from s_emp; select avg(nvl(commission_pct,0)) from s_emp;
1 a,b,c 2 a,f,x 3 e,m create or replace procedure proc_alltypes is begin for c in (select id, name, parentid from producttype) loop dbms_output.put_line(c.id); end loop; end proc_alltypes; begin...
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE" FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_...
like 'M%':M开头的 like '_a%':第二个字符是a的 like '%a%'所有含a的 (“_”表示一个任意字符;“%”表示任意多个任意字符。) 单引号里面的内容,大小写敏感。单引号用来限定字符串, 如果将值与串类型的列...
一、多行函数又称组合函数(Group Functions)、聚合函数 1、 Types of Group Functions avg、count、max、min、stddev、sum、variance avg 求平均数 select avg(nvl(列1,0)) from 表1 count求行数 在where条件中不...
------------------------/组函数(共5个):将多个条件组合到一起最后只产生一个数据------min() max() avg() sum() count()----------------------------/ 51、select count(*) from emp; --求出表中一共有多少条...
/////////////////////////组函数(共5个):将多个条件组合到一起最后只产生一个数据//////min() max() avg() sum() count()///////////////////////////// 51、select count(*) from emp; //求出表中一共有多少条...
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE" FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_...
9.4.3 AVG、COUNT、MAX、MIM和SUM 9.4.4 组值函数和单值函数的组合 9.4.5 STDDEV和、VARIANCE 9.4.6 组函数中的DISTINCT 9.5 列表函数 9.6 使用MAX或MIN函数查找行 9.7 优先级和圆括号的应用 9.8 小结 第10章 日期...