我想处理数据项的平均值和标准差
我尝试2种数据类型:NUMBER和FLOAT
使用AVG 和STDDEV[也试过AVG(DISTINCT|ALL)和STDDEV(distinct|all)]
但是当数据项多的时候,有时查不出数据。(有时查10条好使11条就不好使了)
我现在找不出问题解决。
是不是我的数据类型的问题,还是我用的函数的问题?
请大家帮忙解决一下。
分不多,50分笑纳!
我尝试2种数据类型:NUMBER和FLOAT
使用AVG 和STDDEV[也试过AVG(DISTINCT|ALL)和STDDEV(distinct|all)]
但是当数据项多的时候,有时查不出数据。(有时查10条好使11条就不好使了)
我现在找不出问题解决。
是不是我的数据类型的问题,还是我用的函数的问题?
请大家帮忙解决一下。
分不多,50分笑纳!
但是就是在存储过程中写。结果就出问题了。有时就不显示。
select avg(all t1),avg(distinct t2),AVG(t3) from test_1 where id=1
select avg(all t1),avg(distinct t2),AVG(t3) from test_1
into 变量1,变量2,变量3
where id=1
一定要赋值给变量的
否则就会报错的,估计你的报错部分写的是null,所以没有提示
别忘写Into
我写的是存储过程
刚刚接触ORACLE,SQL的基础很差。
能不能再说详细些。赋值了以后再查变量1,变量2,变量3
能不能给个小例子呢?
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;
hebo2005的意思是让你把检索结果存到变量里再用比如dbms_output.put_line之类的语句打印它。
搂住虽然没有做过Oracle,但是其他的软件开发语言也没做过吗?
在Sqlplus里能显示是因为sqlplus把检索结果给你显示出来了,放到plsql里面这个现实的工作就要自己来完成。这一点和别的开发语言应该是一致的对吧?
比如月报。没天一条记录!月底了就有个累计。
表名: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;应该是我写的不对。请高手指出。先谢谢了!
你直接一条sql语句去实现不就行了啊
这个报表还要查询上旬、中旬和下旬的值的。
我只是举个例子啊
要做10几个这样的报表还有其他的条件我都没加里面
而且字段很多。每个表至少40个以上的字段。hebo2005麻烦你了帮帮忙吧
就是那个平均值那行怎么写?
把这些数据用union 来组合查询的时候,从视图select 就行了
或者用存储过程写临时表(会话级),
然后select 临时表其实如果这些数据经常要调用的话,就建数据分析表,把这些数据整理好,用存储过程写进表,建个JOB每天运行下
这样查找的时候直接从这些表去查找一般对业务进行分析大多数是这样做的
表查询也是用UNION组合起来的
数据也都能显示
就是最后的平均值的那行就不显示了
是什么原因呢?
数据类型的原因么?应该不是吧?
我用NUMBER和FLOAT都试过的,结果都是一样,有时好使有时不好使!
好用了~