ORACLE如何求几列数的平均值

doctortree 2014-08-28 11:03:36
如题,AVG函数只是求一列数的平均值,并且可以忽略空值计算
但例如现在有3列数:
‘’,‘1’,‘3’
怎么可以得出这3列数的一个平均值,忽略空值,得出结果为2
谢谢!
...全文
1743 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37360393 2017-02-08
  • 打赏
  • 举报
回复
很简单Select std_area_id,Avg(CHARGE_ZZ+CHARGE_ZZ_N01+CHARGE_ZZ_N02) arpu From tbas.wt_serv_income_mon Partition(p201701) a Group By std_area_id
bw555 2014-08-28
  • 打赏
  • 举报
回复
引用 3 楼 zlloct 的回复:
[quote=引用 1 楼 bw555 的回复:] 特别注意不要出现除0错误
DECODE(DECODE(A,NULL,0,1)+DECODE(C,NULL,0,1)+DECODE(C,NULL,0,1),0,NULL,
nvl(A,0)+NVL(B,0)+NVL(C,0)/DECODE(A,NULL,0,1)+DECODE(C,NULL,0,1)+DECODE(C,NULL,0,1)
)
(c1+c2+c3)/decode(decode(c1,null,0,1)+decode(c2,null,0,1)+decode(c3,null,0,1),0,1,decode(c1,null,0,1)+decode(c2,null,0,1)+decode(c3,null,0,1))[/quote] 这个不行吧,只要有一个为空值,最后平均值也将是空值
CT_LXL 2014-08-28
  • 打赏
  • 举报
回复
引用 1 楼 bw555 的回复:
特别注意不要出现除0错误
DECODE(DECODE(A,NULL,0,1)+DECODE(C,NULL,0,1)+DECODE(C,NULL,0,1),0,NULL,
nvl(A,0)+NVL(B,0)+NVL(C,0)/DECODE(A,NULL,0,1)+DECODE(C,NULL,0,1)+DECODE(C,NULL,0,1)
)
(c1+c2+c3)/decode(decode(c1,null,0,1)+decode(c2,null,0,1)+decode(c3,null,0,1),0,1,decode(c1,null,0,1)+decode(c2,null,0,1)+decode(c3,null,0,1))
doctortree 2014-08-28
  • 打赏
  • 举报
回复
一定要这么复杂吗。。
bw555 2014-08-28
  • 打赏
  • 举报
回复
特别注意不要出现除0错误
DECODE(DECODE(A,NULL,0,1)+DECODE(C,NULL,0,1)+DECODE(C,NULL,0,1),0,NULL,
nvl(A,0)+NVL(B,0)+NVL(C,0)/DECODE(A,NULL,0,1)+DECODE(C,NULL,0,1)+DECODE(C,NULL,0,1)
)
coldstarry 2014-08-28
  • 打赏
  • 举报
回复
例如你的表名是t2(a varchar2(30),b varchar2(30),c varchar2(30)),a,b,c的值是‘’,‘1’,‘3’ begin create table t1(a varchar2(30)); insert into t1 select avg(a) from t2; insert into t1 select avg(b) from t2; insert into t1 select avg(c) from t2; select avg(a) from t2; --三列的平均值 end; / 仅供参考

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧