Función de agregación Multiplicación

29/10/2004 - 12:25 por Felipe Roucher | Informe spam
¿Alguien sabe porqué no existe la función de agregación multiplicación? Ya
sé que no está en el estándar de SQL, pero no consigo entender como puedo
ser el único ser humano que necesita esta funcionalidad.

SELECT MUL(Campo) FROM Tabla

Un saludo a todos.
 

Leer las respuestas

#1 darkveider
22/04/2013 - 12:44 | Informe spam
Felipe Roucher escribió el 29/10/2004 17:32 :
Voy a complicar un poco el tema:
Tenemos la seguiente tabla

Id Grupo Factor
1 1 0.5
2 1 5
3 1 2
4 2 3
5 2 .25

Y quiero que me devuelva una consulta de la siguiente forma

Grupo Factor
1 5
2 0.75

Es decir, quisiera tener el equivalente a:

SELECT Grupo, MUL(Factor) FROM Tabla GROUP BY Grupo

¿Es posible realizar esta instrucción sin un bucle ó
cursor?


"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió
en el mensaje
news:%
Porque el script que mandé estaba pensado para multiplicaciones de
números enteros. La variable que declares tiene que ser del mismo tipo
del
campo al que vas a aplicar la función, en este caso REAL.
Pruébalo y verás
que el resultado es el correcto (0.79999918)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Felipe Roucher" escribió en el
mensaje
news:#
>
> CREATE TABLE Tabla
> (
> Id int identity(1,1) NOT NULL,
> Factor real NOT NULL
> )
>
> INSERT Tabla VALUES (0.5)
> INSERT Tabla VALUES (2)
> INSERT Tabla VALUES (3)
> INSERT Tabla VALUES (.333333)
> INSERT Tabla VALUES (4)
> INSERT Tabla VALUES (.2)
>
> DECLARE @i BIGINT
> SET @i=1
>
> SELECT @i=@i*Factor FROM Tabla
>
> SELECT @i multiplicacion
>
>
> "Tako" escribió en el mensaje
> news:
> >
> > Te equivocas, (acabo de probarlo de hecho) el código de
abajo
funciona
> > perfectamente (aunque no se que hará si hay campos nulos)
> >
> > Felipe Roucher wrote:
> > > Imagínate la siguiente tabla
> > >
> > > Id Factor
> > > 1 0.5
> > > 2 2
> > > 3 3
> > > 4 .3333333
> > > 5 4
> > > 6 0.2
> > >
> > > SELECT MUL(Campo) FROM Tabla, daría como resultado '1'
> > >
> > > Tu script me devolvería una tabla con 6 filas,
¿ves como no es lo
> > > mismo?
> > >
> > > Gracias de todos modos.
> > >
> > >
> > > "Carlos Sacristan" <csacristan ARROBA mvps.org>
escribió en el



mensaje
> > > news:
> > >> Bueno, si sólo necesitas calcular esa
multiplicación podrías
> > >> hacerlo así:
> > >>
> > >> DECLARE @i BIGINT
> > >> SET @i=1
> > >>
> > >> SELECT @i=@i*campo FROM tabla
> > >>
> > >> SELECT @i multiplicacion
> > >>
> > >>
> > >> Un saludo
> > >>
> > >> -
> > >> "Sólo sé que no sé nada. "
(Sócrates)
> > >>
> > >> Por favor, responder únicamente al foro
> > >> Se agradece la inclusión de sentencias DDL
> > >>
> > >>
> > >> "Felipe Roucher"
escribió en el mensaje
> > >> news:#
> > >>>
> > >>> ¿Alguien sabe porqué no existe la
función de agregación
> > >>> multiplicación? Ya sé que no está
en el estándar de SQL, pero no
> > >>> consigo entender como puedo ser el único ser
humano que necesita
> > >>> esta funcionalidad.
> > >>>
> > >>> SELECT MUL(Campo) FROM Tabla
> > >>>
> > >>> Un saludo a todos.
> >
> >
> >
>
>




Bueno por si a alguien le llega a interesar en algún momento:

SELECT Grupo, EXP(SUM(LOG(Factor))) FROM Tabla GROUP BY Grupo

Saludos.

Preguntas similares