很傻很天真地鄙视了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
本文介绍了在SQL中实现连乘聚合的一种方法,并提供了一个具体的函数示例。此外还介绍了一种更高效的连乘实现方式,即通过计算风险值的对数总和再进行指数运算。

156

被折叠的 条评论
为什么被折叠?



