Oracle,PostgreSQL都没有直接求几何平均数的方法,需要通过以下方式实现:
power(exp(1),ln(exp(sum(ln(col_a))))/count(1))
首先要知道求积如何实现:
with sele as (select 3 as col_a union all select 4 as col_a)
select exp(sum(ln(col_a))) from sele
然后再知道如何开方:
--对4开2次方
select power(exp(1),ln(4)/2)
然后整合函数:
with sele as (select 3 as col_a union all select 4 as col_a)
select power(exp(1),ln(exp(sum(ln(col_a))))/count(1)) from sele
这个函数也可以在group by中使用。