在mysql中,如果有一个数字(整数,十进制或浮点)列,他可以使用sum
函数添加所有值:
select sum(mycolumn) from mytable where condition;
假设我对列中值的产品感兴趣。例如,给定
+----------+ | mycolumn | +----------+ | 1 | | 2 | | 1 | | 3 | +----------+
,我希望select fcn(mycolumn) from mytable
返回6
(对于某些函数fcn
)。我该怎么做?请记住,可能有很多行。
答案 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以防止每次都要挖掘查询。