pri*_*kar 2 sql t-sql sql-server sql-server-2005
假设我有一个如下表:
Numbers
4
5
3
6
Run Code Online (Sandbox Code Playgroud)
使用基于SET的方法如何执行乘法,因此输出将是:
Output
360
Run Code Online (Sandbox Code Playgroud)
NB〜有没有硬性的规则,将只有四个数字,但我宁愿使用一个CTE和/或相关子查询的答案.
您可以使用利用以下数学事实的对数/指数:
log(a*b*c...*n)=log(a)+log(b)+log(c)...+log(n)
Run Code Online (Sandbox Code Playgroud)
因此,您可以使用该sum函数添加列的所有对数,然后获取该总和的指数,该指数给出该列的聚合乘法:
create table #tbl (val int)
insert into #tbl (val) values(1)
insert into #tbl (val) values(2)
insert into #tbl (val) values(3)
insert into #tbl (val) values(4)
select exp(sum(log(val))) from #tbl
drop table #tbl
Run Code Online (Sandbox Code Playgroud)
如果内存对我有用,那么需要注意一个边缘情况...... log(0)是一个错误.
| 归档时间: |
|
| 查看次数: |
1503 次 |
| 最近记录: |