日期:2014-05-16  浏览次数:20840 次

mysql有没有类似sum一样的*=函数
我想在获取几条数据之间的其中一个字段的乘积,字段是小数型的,如果是加可以用sum,但是用乘有没有这样的函数,如果mysql没有,自己怎么写这个函数?

------解决方案--------------------
这个还真没有遇到过,请高人继续,我这里有一个变通的想法,你试试:
select agv(字段) * count(字段) from 表
------解决方案--------------------
mysql> create table test1(a int);
Query OK, 0 rows affected (0.03 sec)

mysql> insert into test1 values(2);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test1 values(3);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test1 values(4);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test1 values(5);
Query OK, 1 row affected (0.00 sec)

mysql> select power(10,sum(log(10,a))) from test1;
+--------------------------+
| power(10,sum(log(10,a))) |
+--------------------------+
| 119.99999999999996 |
+--------------------------+
1 row in set (0.00 sec)

mysql>
------解决方案--------------------
探讨

这个还真没有遇到过,请高人继续,我这里有一个变通的想法,你试试:
select agv(字段) * count(字段) from 表

------解决方案--------------------
null就判断一下变成1啊


select power(10,sum(log(10,ifnull(a,1)))) from test1;
------解决方案--------------------
没有这种标准的聚合函数。只能自己写自定义函数或者在程序中实现。
------解决方案--------------------
没有那个DB会提供乘积方法,应该不属于聚集方法,用sql直接计算,不太合理吧
应该在ap中直接将结果拿来计算