我想处理数据项的平均值和标准差
我尝试2种数据类型:NUMBER和FLOAT
使用AVG 和STDDEV[也试过AVG(DISTINCT|ALL)和STDDEV(distinct|all)]
但是当数据项多的时候,有时查不出数据。(有时查10条好使11条就不好使了)
我现在找不出问题解决。
是不是我的数据类型的问题,还是我用的函数的问题?
请大家帮忙解决一下。
分不多,50分笑纳!

解决方案 »

  1.   

    是不是你有些数据是null的,NULL的是不参与计算的
      

  2.   

    语句在SQL*Plus 上执行是好用的
    但是就是在存储过程中写。结果就出问题了。有时就不显示。
    select avg(all t1),avg(distinct t2),AVG(t3) from test_1 where id=1
      

  3.   

    多大数据量啊,number型的应该没问题啊
      

  4.   

    存储过程中,你这样写当然有问题
    select avg(all t1),avg(distinct t2),AVG(t3) from test_1
    into 变量1,变量2,变量3
     where id=1 
    一定要赋值给变量的
    否则就会报错的,估计你的报错部分写的是null,所以没有提示
      

  5.   

    是游标还是单纯Select语句?
    别忘写Into
      

  6.   

    不好意思
    我写的是存储过程
    刚刚接触ORACLE,SQL的基础很差。
    能不能再说详细些。赋值了以后再查变量1,变量2,变量3 
    能不能给个小例子呢?
      

  7.   

    这是我正在写的一个存储过程一部分
    SELECT SUM (qty), SUM (sale_price * qty)
         INTO ls_tot_qty, ls_tot_amt
         FROM temp_order
        WHERE cust_no = in_cust_no AND order_date = ls_order_date;
    取出这些值后不知道你要干什么?
    比如说要做条件判断
    if ls_tot_qty>=1 then或者要返回值
    out_qty:=ls_tot_qty;
      

  8.   


    hebo2005的意思是让你把检索结果存到变量里再用比如dbms_output.put_line之类的语句打印它。
    搂住虽然没有做过Oracle,但是其他的软件开发语言也没做过吗?
    在Sqlplus里能显示是因为sqlplus把检索结果给你显示出来了,放到plsql里面这个现实的工作就要自己来完成。这一点和别的开发语言应该是一致的对吧?
      

  9.   

    我就是要做个报表
    比如月报。没天一条记录!月底了就有个累计。
    表名:t1
    比如我的表结构是:a1    a2    rq
                    11   111   20080101
                    22   222   20080102
                    33   333   20080103
                    44   444   20080104
                    ...  ...   ........我想实现每日显示数据,最后一条数据是平均值。
    请问要怎么写存储过程呢?
    我是这样写的:(           
      dt out sys_refcursor,rq1 date           
    )           
    as           
    begin  
      open dt for select a1,a2 from t1 where to_char(rq,'yyyymm')=to_char(rq1,'yyyymm')  union 
      select avg(a1),avg(a2) from t1 where to_char(rq,'yyyymm')=to_char(rq1,'yyyymm') ;
    end;应该是我写的不对。请高手指出。先谢谢了!
      

  10.   

    这种不需要存储过程去做的
    你直接一条sql语句去实现不就行了啊
      

  11.   

    我只是想知道怎么解决平均数这个问题
    这个报表还要查询上旬、中旬和下旬的值的。
    我只是举个例子啊
    要做10几个这样的报表还有其他的条件我都没加里面
    而且字段很多。每个表至少40个以上的字段。hebo2005麻烦你了帮帮忙吧
    就是那个平均值那行怎么写?
      

  12.   

    你可以把你需要显示的数据生成一张视图
    把这些数据用union 来组合查询的时候,从视图select 就行了
    或者用存储过程写临时表(会话级),
    然后select 临时表其实如果这些数据经常要调用的话,就建数据分析表,把这些数据整理好,用存储过程写进表,建个JOB每天运行下
    这样查找的时候直接从这些表去查找一般对业务进行分析大多数是这样做的
      

  13.   

    我是用GRIDVIEW显示的
    表查询也是用UNION组合起来的
    数据也都能显示
    就是最后的平均值的那行就不显示了
    是什么原因呢?
    数据类型的原因么?应该不是吧?
    我用NUMBER和FLOAT都试过的,结果都是一样,有时好使有时不好使!
      

  14.   

    你avg前面加round(avg(a1),2)这样去试试
      

  15.   

    hebo2005谢谢了兄弟!
    好用了~