乘以列值

时间:2013-02-14 16:44:23

标签: mysql math

在mysql中,如果有一个数字(整数,十进制或浮点)列,他可以使用sum函数添加所有值:

select sum(mycolumn) from mytable where condition;

假设我对列中值的产品感兴趣。例如,给定

+----------+
| mycolumn |
+----------+
|        1 |
|        2 |
|        1 |
|        3 |
+----------+

,我希望select fcn(mycolumn) from mytable返回6(对于某些函数fcn)。我该怎么做?请记住,可能有很多行。

1 个答案:

答案 0 :(得分:1)

适用于零以及正面和正面负数:

select 
case 
when sum(case when mycolumn = 0 then 1 else 0 end) > 0 then 0 
else
 case when mod(sum(case when mycolumn < 0 then 1 else 0 end),2) = 0 then 1 
 else -1 
 end * exp(sum(log(coalesce(mycolumn,1)))) 
end as product
from mytable
where condition;

这看起来非常丑陋,因此可能值得将所有内容整理到user defined function以防止每次都要挖掘查询。