首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在oracle sql中通过忽略分母中的空值来查找平均值

问在oracle sql中通过忽略分母中的空值来查找平均值
EN

Stack Overflow用户
提问于 2020-07-07 08:56:19
回答 2查看 75关注 0票数 1

我们有像这样的桌子

​

现在我们必须在加权的基础上计算col1,col2,col3,col4的平均值分别为0.5,1.0,0.5,1.0,因此公式看起来像((col1*0.5)+(col2*1)+(col3*0.5)+(col4*1))/(0.5+1+0.5+1),但如果任何一列的值为null,则不应在分母中考虑,例如,第2行的平均值公式应为

((0.398160315*0.5)+(nvl(col2,0)*1)+(0*0.5)+(nvl(col4,0)*1))/(0.5+0.5) =0.199080161

在sql中计算我可以通过nvl(col1,0)处理分子中的null,但如何处理分母中的null

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-07 08:58:24

您可以使用nvl2()

代码语言:javascript
复制
(0.5*nvl(col1, 0) + 1.0*nvl(col2, 0) + 0.5*nvl(col3, 0) + 1.0*nvl(col4, 0),
 0.5*nvl2(col1, 1, 0) + 1.0*nvl2(col2, 1, 0) + 0.5*nvl2(col3, 1, 0) + 1.0*nvl2(col4, 1, 0)
)

通常,我更喜欢coalesce()而不是nvl()。但是,当与nvl2()结合使用时,nvl()似乎是合理的。

票数 1
EN

Stack Overflow用户

发布于 2020-07-07 11:14:00

可以使用Oracle AVG()函数来实现您的目的。可以查看Oracle Docs以了解有关用法的更多信息。函数的作用是:忽略空值。例如,2、4和NULL的平均值是(2 + 4) /2 = 3。希望这会有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62766553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档