在PL/SQL中 使用 case when 语句求两个条件合并统计的平均值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在PL/SQL中 使用 case when 语句求两个条件合并统计的平均值相关的知识,希望对你有一定的参考价值。

t.bipcode = 'BIP2C092' t.bipcode = 'BIP2C094' 这个它的两个条件 求他两SUM过后的平均值

参考技术A 三个case语句效果相同,其实就是类似于增加一个字段,这个字段,满足条件的为1,不满足的是0,这样sum的效果,就是将所有的1加起来,也就是所有满足条件的记录个数。
而count,会不管是1还是0,都会统计,这样怎么算都是总条目数8个。
语句这东西,灵活使用的情况太多,慢慢来吧,做到遇到一个理解一个,很快也就熟练了。

Oracle的PL_SQL的异常处理

--什么是异常
--异常是在PL/SQL运行过程中有可能出现的错误。

--执行异常的语句
exception
  when [异常] when
    --异常输出信息。

--Oracle的预定义异常
CASE_NOT_FOUND  ora-06592 
--case语句中,when子句没有匹配的条件,而且没有else语句,会触发该异常。
NO_DATA_FOUND ORA-01403 
--select..into语句没有返回记录,触发该异常
TOO_MANY_ROWS ORA-01422
--select..into语句返回记录多于一条,触发该异常
DUP_VAL_ON_INDEX ORA-00001
--表中唯一索引所对应的列上出现重复值时,引发该异常
VALUE_ERROR ORA-06502
--赋值时,如果变量长度不够,引发该异常
ZERO_DIVIDE ORA-01476
--除数为零时引发的异常
STORAGE_ERROR ORA-06500
--内容溢出或破坏引发该异常
TIMEOUT_ON_RESOURCE ORA-00051
--等待资源超时引发该异常
CURSOR_ALREADY_OPEN ORA-06511
--打开一个已经打开的游标引发该异常





--非预定义异常
1、声明一个异常的名称。
2、把这个异常名称和异常的编号相关联。
--实例
declare
v_t varchar2(5);
v_tt varchar2(3);
tt_8899_exp exception;--声明异常
pragma exception_init(tt_8899_exp,-8899);--exception_init(异常名称,异常代码)

begin
v_t:=1111;

case v_t 
  when 222 then 
    dbms_output.put_line(555);
    end case;

exception
  when CASE_NOT_FOUND then
    dbms_output.put_line(字符串超标);
    dbms_output.put_line(SQLERRM);--输出异常信息
    dbms_output.put_line(SQLCODE);--输出异常的代码
 rollback;   
    end;


--自定义异常
declare
v_t number(10);

tt_8899_exp exception;--声明异常
pragma exception_init(tt_8899_exp,-8899);--exception_init(异常名称,异常代码)

begin
       v_t:=-1;  
       if v_t<0 then
         raise tt_8899_exp;--启动自定义异常tt_8899_exp
         end if;

exception
  when CASE_NOT_FOUND then
    dbms_output.put_line(SQLERRM);--输出异常信息
    dbms_output.put_line(SQLCODE);--输出异常的代码
    when  tt_8899_exp then   
      dbms_output.put_line(字符串超标);
      dbms_output.put_line(SQLERRM);--输出异常信息
    dbms_output.put_line(SQLCODE);--输出异常的代码
 rollback;   
    end;

 

以上是关于在PL/SQL中 使用 case when 语句求两个条件合并统计的平均值的主要内容,如果未能解决你的问题,请参考以下文章

pl/sql 中选中一行的快捷键是啥?

PL/SQL 中 CASE 语句中的堆栈条件

pl/sql程序,Oracle作用域问题

pl/sql ora-02296

pl/sql ora-02296

oracle 中 sql 应用case when 提示数字无效问题。高手指点迷津!!!!