我在寻找类似于SUM
的SELECT PRODUCT(table.price) FROM table GROUP BY table.sale
个.
我是否遗漏了文档中的某些内容,或者真的没有PRODUCT
函数?
如果是,为什么不呢?
注意:我在postgres、mysql和mssql中查找了这个函数,但没有找到,所以我假设所有sql都不支持它.
我在寻找类似于SUM
的SELECT PRODUCT(table.price) FROM table GROUP BY table.sale
个.
我是否遗漏了文档中的某些内容,或者真的没有PRODUCT
函数?
如果是,为什么不呢?
注意:我在postgres、mysql和mssql中查找了这个函数,但没有找到,所以我假设所有sql都不支持它.
SQL标准中没有PRODUCT
集函数.不过,它似乎是一个很有价值的候选者(与CONCATENATE
集函数不同:它不太适合SQL,例如,生成的数据类型将涉及多值,并对第一个范式造成问题).
SQL标准的目标是在大约1990年前后整合SQL产品的功能,并为future 的开发提供"思想领导".简而言之,它们记录了SQL的功能和应该做什么.PRODUCT
集函数的缺失表明,1990年没有供应商,尽管它值得纳入,也没有学术兴趣将其引入标准.
当然,供应商总是试图添加自己的功能,这些天通常是作为标准的扩展,而不是间接的.我不记得在我使用的任何SQL产品中看到过PRODUCT
集函数(甚至不需要).
在任何情况下,使用log
和exp
个标量函数(以及处理负数的逻辑)和SUM
set函数都相当简单;有关一些示例代码,请参见@gbn的答案.不过,我从来没有在商业应用程序中这样做过.
总之,我的最佳猜测是,SQL最终用户对PRODUCT
集函数没有需求;此外,任何有学术兴趣的人都可能会发现这种变通方法是可以接受的(即,不会重视PRODUCT
集函数提供的语法糖分).
出于兴趣,SQL Server领域确实需要新的集合函数,但也需要窗口函数(以及标准SQL).有关更多详细信息,包括如何参与进一步推动需求,请参见Itzik Ben-Gan's blog.