sql - 聚合函数以乘以所有值

标签 sql oracle

例如我有这样的数据

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))) ) 

DEMO

注意:我刚刚发现如果其中一行有 0,这将失败。因此您应该使用单独的条件或 with 子句,如果其中一个为零,则乘积应为零。

关于sql - 聚合函数以乘以所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56489932/

相关文章:

java - 像oracle中的搜索一样吗?

sql - 将数据从一个表复制到另一个postgresql

sql - 您可以打印 SQL Server View 的图形表示吗?

PHP OCI8 扩展不适用于 PHP 7 64 位

java - 在 Java 中将 split to_char 语句从 Oracle 转换为 SQL Server

c# - 尝试使用最小设置配置从 C# 程序连接到 Oracle 10g 数据库时出错

Oracle 触发器 - 变异表的问题

sql - 选择联合计数和组,多个表,postgresql

sql - SQL中的卖单减法

mysql - SQL插入?将数据从一个插入到另一个