0

在 mysql 中,如果一个人有一个数字(整数、小数或浮点数)列,他可以使用以下sum函数将所有值相加:

select sum(mycolumn) from mytable where condition;

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

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

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

4

1 回答 1

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;

这看起来很丑陋,因此可能值得将全部内容放入用户定义的函数中,以防止每次都必须挖掘查询。

于 2013-02-14T17:26:25.810 回答