很傻很天真地鄙视了SQL没有连乘的聚合函数。
还自己在sql server 上拷贝别人的方法实现了很慢的连乘,由于当时对性能没有什么要求,出结果就可以了。
CREATE FUNCTION [dbo].[multiRisk](@username varchar(100),@pname varchar(200))
RETURNS float
AS
BEGIN
DECLARE @s float
SET @s=1.0
SELECT @s=@s* risk FROM rdb..tmp_result WHERE username=@username and pname=@pname
RETURN @s
END
原来聚合函数不是没有连乘而是不需要。
只要使用如下方法就可以了
select exp(sum(log(risk))) as result,username from tmp_result group by username