input我由以下列组成:time
, UseID
,和value
。我想要plt
列作为连续数字的乘积。
我知道 SUM
的存在窗口函数对行应用求和,但如何处理乘积?
注意:输出应该在实数域内。
最佳答案
您可以使用对数!
log(x) + log(y) = log(x*y) ==> x*y = exp(log(x) + log(y))
所以你的查询变成:
select
time,
UseID,
value,
exp(
sum(ln(value)) over (
partition by UseID
order by time asc
rows between unbounded preceding and current row
)
) as plt
from your_table
关于SQL-我如何使用窗口函数跨分区进行乘积/乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72225338/