no hay ninguna función PRODUCT
conjunto en el estándar SQL. Sin embargo, parece ser un candidato digno (a diferencia de, digamos, una función de conjunto CONCATENATE
: no es una buena opción para SQL, por ejemplo, el tipo de datos resultante involucraría multivalos y plantearía un problema con respecto a la primera forma normal).
Los estándares SQL tienen como objetivo consolidar la funcionalidad de los productos SQL alrededor de 1990 y proporcionar un "liderazgo de pensamiento" en el desarrollo futuro. En resumen, documentan lo que SQL hace y lo que SQL debe hacer. La ausencia de la función de conjunto PRODUCT
sugiere que, en 1990, ningún proveedor era digno de ser incluido y que no ha habido interés académico en introducirlo en el Estándar.
Por supuesto, los vendedores siempre han intentado agregar su propia funcionalidad, actualmente como extensiones a estándares en lugar de tangentally. No recuerdo haber visto una función de configuración PRODUCT
(o incluso la demanda de una) en ninguno de los productos SQL que he usado.
En cualquier caso, el trabajo es bastante simple usando log
y exp
funciones escalares (y lógica para manejar negativos) con la función de conjunto SUM
; ver la respuesta de @gbn para un código de muestra. Sin embargo, nunca tuve que hacer esto en una aplicación de negocios.
En conclusión, mi mejor estimación es que no hay demanda por parte de los usuarios finales de SQL para una función de conjunto PRODUCT
; además, que cualquier persona con un interés académico probablemente encontraría la solución alternativa aceptable (es decir, no valoraría el azúcar sintáctico que proporcionaría una función de conjunto PRODUCT
).
Fuera de interés, de hecho hay demanda en SQL Server Land para nuevas funciones de conjunto pero para aquellas de la variedad de funciones de ventana (y Standard SQL, también). Para obtener más detalles, incluido cómo participar en la demanda de conducción adicional, consulte Itzik Ben-Gan's blog.
Supongo que es mucho más raro querer calcular el producto en un conjunto de números que una suma. Incluso en su ejemplo, ¿con qué frecuencia desea calcular el producto de un conjunto de precios? –
¿Cuál es el valor del producto (table.price) que se supone que debe responder? Al leer la "función de agregado de producto", entiendo que es para devolver el producto de todos los valores de tabla.precio encontrados en el conjunto de resultados: Row1.Price * Row2.Price * ... * RowN.Price. Pero por mi vida, no entiendo qué significa ese valor ", ¿qué información se supone que debe transmitir? ¿Cuál es la aplicación práctica de esto, para los precios o cualquier otro tipo de valor? Por favor iluminame. –
para mi caso no es en realidad por precios, sino por obtener un producto de rendimientos (qty_out/qty_in). – lock