例如我有这样的数据
1
2
3
4
5
如何将每一行相乘?有没有类似SUM()
的函数,所以这个例子的答案是120。
最佳答案
是的,this blog 中描述了一种技术:
基本上,您采用SUM
的自然对数,然后进行指数运算 (e^x
)
SELECT EXP (SUM (LN (col))) as product from t;
因为这将是一个 float 的输出,你可以做一个FLOOR
FLOOR( EXP (SUM (LN (col))) )
注意:我刚刚发现如果其中一行有 0
,这将失败。因此您应该使用单独的条件或 with
子句,如果其中一个为零,则乘积应为零。
关于sql - 聚合函数以乘以所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56489932/