¿Hay alguna instrucción para realizarlo todo desde Oracle, o tendré desde fuera de Oracle realizar la operación?
|
|
#1 (permalink) |
![]() Fecha de Ingreso: abril-2007
Mensajes: 160
|
Realizar operación aritmética con el resultado de dos consultas
¿Hay alguna instrucción para realizarlo todo desde Oracle, o tendré desde fuera de Oracle realizar la operación? |
|
|
|
|
|
#2 (permalink) |
![]() Fecha de Ingreso: enero-2005
Mensajes: 89
|
Re: Realizar operación aritmética con el resultado de dos consultas
Oracle te permite realizar casi cualquier operación matemática! :D
Mira si existe alguna función predefinida por oracle para realizar la operación que deseas (en caso de que quieras hacer algun arcoseno, tangentes lalalala...) Cuando sepas que función de oracle puedes utilizar mira como funcionan sus argumentos. Tomando el ejemplo que tu mismo pones con la división miramos que el "operador" utilizado para la operación es "/" y necesita 2 números como argumentos. Supongamos que la consulta_1 y la consulta_2 devuelven un único valor numérico cada una. Podrías hacer lo siguiente: select (consulta_1)/(consulta_2) from dual; El resultado de esta consulta te daría la división, pero podrías realizar cualquier otra operación con los resultados de tus dos consultas. |
|
|
|
|
|
#3 (permalink) |
![]() Fecha de Ingreso: abril-2007
Mensajes: 160
|
Re: Realizar operación aritmética con el resultado de dos consultas
¡Ok, gracias! Había probado poniendo directamente los operadores, pero lo que no sabía era que tenía que utilizar la tabla dual.
Última edición por programadornet; 16-jul-2007 a las 11:44. |
|
|
|
|
|
#4 (permalink) |
![]() Fecha de Ingreso: abril-2007
Mensajes: 160
|
Re: Realizar operación aritmética con el resultado de dos consultas
Me queda una duda: ¿cómo hacer que la operación se haga con consultas que devuelvan varios registros?
Es decir, si tengo consulta1 y consulta2, y ambas arrojan un valor, hacer consulta1/consulta2 está claro que dará un valor. ¿Pero y si tengo que consulta1 y consulta2, tienen un "group by CAMPO_X", por el cual obtienen varios valores, y quiero realizar la operación para cada campo equivalente entre la 1 y la 2? (y obtener así una tabla de salida que tenga los resultados, que serían los de dividir el registro 1 de la consulta 1 entre el registro 1 de la consulta 2, el registro 2 de la consulta 1 entre el 2 de la 2, y así). Última edición por programadornet; 17-jul-2007 a las 03:23. |
|
|
|
|
|
#8 (permalink) |
![]() Fecha de Ingreso: abril-2007
Mensajes: 160
|
Re: Realizar operación aritmética con el resultado de dos consultas
Si las dos te devuelven dos filas, con dos columnas de la cual una es con la que quieres hacer la operación, por ejemplo (y quieres mostrar el resultado de dividir el campo de cada tabla entre su correspondiente en la otra).
Por ejemplo: Consulta 1: Campo1 Campo2 A............... 55 B................60 Consulta2: Campo1 Campo2 A.................10 B.................30 Y queremos obtener la tabla: Campo1 ResultadoDivision A .................55/10 B..................60/30 ¿Cómo se haría en este caso sencillo? |
|
|
|
|
|
#9 (permalink) |
![]() Fecha de Ingreso: enero-2005
Mensajes: 89
|
Re: Realizar operación aritmética con el resultado de dos consultas
Lo que necesitas es hacer la siguiente consulta
select t1.campo1, (t1.campo2)/(t2.campo2) Resultado from tabla_1 t1, tabla_2 t2 where t1.campo1=t2.campo1 Si las dos tablas tienen una cantidad diferente de registros deberías hacer algo así: select t1.campo1, (nvl(t1.campo2,0))/(nvl(t2.campo2,1)) Resultado from tabla_1 t1, tabla_2 t2 where t1.campo1=t2.campo1(+) Última edición por MACGREGOR; 19-jul-2007 a las 03:47. |
|
|
|
|
|
#10 (permalink) |
![]() Fecha de Ingreso: abril-2007
Mensajes: 160
|
Re: Realizar operación aritmética con el resultado de dos consultas
Gracias, pero el problema está en que no es una comparación entre dos campos, sino entre dos campos DE DOS CONSULTAS DIFERENTES sobre una misma tabla, y cada consulta obtiene los datos mediante un count(*) y group by (o sea, que arroja una serie de cuentas agrupadas por el valor de cierta columna).
|
|
|
|
|
|
#11 (permalink) |
![]() Fecha de Ingreso: abril-2007
Mensajes: 160
|
Re: Realizar operación aritmética con el resultado de dos consultas
Hola!
He visto que me has respondido en el subforo de base de datos. ¿Puedes decirme cómo poner un alias (como los que pones de t1) o un nombre a una consulta? |
|
|
|
|
|
#12 (permalink) |
![]() Fecha de Ingreso: enero-2005
Mensajes: 89
|
Re: Realizar operación aritmética con el resultado de dos consultas
Hola,
En mi último mensaje te dije que hicieras esta consulta. select t1.campo1, (t1.campo2)/(t2.campo2) Resultado from tabla_1 t1, tabla_2 t2 where t1.campo1=t2.campo1 lo único que debes hacer es hacer la misma estructura, pero en lugar de con tablas con las consultas que quieras. select t1.campo1, (t1.campo2)/(t2.campo2) Resultado from (select x.id campo1, x.cantidad campo2 from tabla_X x where "condiciones") t1, (select y.id campo1 sum(y.numero) campo2 from tabla_Y y where "condiciones" group by ...) t2 where t1.campo1=t2.campo1 Lo que te pongo en negrita son Alias, los nombres que le pongo a cada campo, consulta o tabla. Solo tienes que poner tus consultas en lugar de las que he puesto de ejemplo. Espero que ahora ya te funcione todo perfecto. Un saludo. |
|
|
|