现在我们必须基于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 但是我该如何处理分母
答案 0 :(得分:1)
您可以使用nvl2()
:
coalesce()
通常,我更喜欢nvl()
比nvl()
。但是nvl2()
与{
"status": "OK",
"items": [
{
"order_id": 1290,
"date": "2019-12-24",
"services": [
{
"start_at": "08:00",
"end_at": "09:00",
"service_id": 121,
"assistant_id": 0
},
{
"start_at": "12:00",
"end_at": "13:00",
"service_id": 122,
"assistant_id": 0
}
],
}
]
}
结合使用似乎很合理。
答案 1 :(得分:0)
Oracle AVG()函数可用于实现您的目的。可以查看Oracle Docs了解有关用法的更多信息。 AVG()函数将忽略NULL值。例如,2、4和NULL的平均值为(2 + 4)/ 2 =3。希望有帮助。