MUL是指值的渐进乘法?
即使有100个较小的行(例如10s),您的MUL(列)也会溢出任何数据类型!由于滥用/滥用的可能性很高,并且使用范围非常有限,因此不必成为SQL标准。正如其他人所展示的那样,有许多数学方法可以解决该问题,就像有很多方法可以使用标准(和通用)方法在SQL中进行棘手的计算一样。
样本数据:
Column
1
2
4
8
COUNT : 4 items (1 for each non-null)
SUM : 1 + 2 + 4 + 8 = 15
AVG : 3.75 (SUM/COUNT)
MUL : 1 x 2 x 4 x 8 ? ( =64 )
为了完整起见,Oracle,MSSQL,MySQL核心实现*
Oracle : EXP(SUM(LN(column))) or POWER(N,SUM(LOG(column, N)))
MSSQL : EXP(SUM(LOG(column))) or POWER(N,SUM(LOG(column)/LOG(N)))
MySQL : EXP(SUM(LOG(column))) or POW(N,SUM(LOG(N,column)))
注意在SQL Server中使用EXP / LOG时,请注意返回类型http://msdn.microsoft.com/zh-cn/library/ms187592.aspx
POWER表单允许使用更大的数字(使用比Euler的数字大的基数),并且如果结果增长太大而无法使用POWER将其返回,则可以只返回对数值并在SQL查询之外计算实际数字</