我有像这样的sql:
select avg(decode(type, 'A', value, null) + decode(type, 'B', value, null)) from table;
这样做的问题是其中一些类型可以为 null,因此添加部分将导致 null,因为向 null 添加任何内容都会使其为 null。因此,您可能认为我可以将解码从 null 更改为 0,但这似乎使 avg() 将其计为平均值的一部分,但它不应该/我不希望它计为平均值的一部分。
理想情况下,添加只会忽略空值,而不是尝试将它们添加到其余值中。
所以假设我的数字是:
5 + 6 + 5
3 + 2 + 1
4 + null + 2
它们总共 28,我想除以 8(忽略 null),但是如果我在解码中将 null 更改为 0,则 avg 将除以 9,这不是我想要的。