我正在寻找类似于 SUM
工作方式的 SELECT PRODUCT(table.price) FROM table GROUP BY table.sale
之类的内容。
我是否错过了文档中的某些内容,或者真的没有 PRODUCT
功能?
如果是这样,为什么不呢?
注意:我在postgres、mysql和mssql中查找了该函数,但没有找到,所以我假设所有sql都不支持它。
最佳答案
对于 MSSQL,您可以使用它。它可以用于其他平台:它只是数学和对数的聚合。
SELECT
GrpID,
CASE
WHEN MinVal = 0 THEN 0
WHEN Neg % 2 = 1 THEN -1 * EXP(ABSMult)
ELSE EXP(ABSMult)
END
FROM
(
SELECT
GrpID,
--log of +ve row values
SUM(LOG(ABS(NULLIF(Value, 0)))) AS ABSMult,
--count of -ve values. Even = +ve result.
SUM(SIGN(CASE WHEN Value < 0 THEN 1 ELSE 0 END)) AS Neg,
--anything * zero = zero
MIN(ABS(Value)) AS MinVal
FROM
Mytable
GROUP BY
GrpID
) foo
摘 self 的回答:SQL Server Query - groupwise multiplication
关于sql - 为什么SQL中没有Product聚合函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3912204/