Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Realizar operación aritmética con el resultado de dos consultas

Estas en el tema de Realizar operación aritmética con el resultado de dos consultas en el foro de Oracle en Foros del Web. Quiero saber si desde Oracle puedo realizar una operación con el resultado de dos consultas (o con un campo del resultado de dos consultas), por ...
  #1 (permalink)  
Antiguo 16/07/2007, 05:17
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
Realizar operación aritmética con el resultado de dos consultas

Quiero saber si desde Oracle puedo realizar una operación con el resultado de dos consultas (o con un campo del resultado de dos consultas), por ejemplo, dividir lo que arroje la consulta 1 (que será un número, por ejemplo resultado de realizar un count) entre lo que arroje la consulta 2.

¿Hay alguna instrucción para realizarlo todo desde Oracle, o tendré desde fuera de Oracle realizar la operación?
  #2 (permalink)  
Antiguo 16/07/2007, 06:58
Avatar de MACGREGOR  
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 19 años, 3 meses
Puntos: 0
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)  
Antiguo 16/07/2007, 11:34
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
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/07/2007 a las 11:44
  #4 (permalink)  
Antiguo 17/07/2007, 03:12
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
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/07/2007 a las 03:23
  #5 (permalink)  
Antiguo 17/07/2007, 03:27
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Re: Realizar operación aritmética con el resultado de dos consultas

Deberías hacer una join con las dos consultas y un valor de tadas la sfilas devueltas será el resultado de la operación atritmetica
  #6 (permalink)  
Antiguo 17/07/2007, 05:14
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
Re: Realizar operación aritmética con el resultado de dos consultas

Cita:
Iniciado por jc3000 Ver Mensaje
Deberías hacer una join con las dos consultas y un valor de tadas la sfilas devueltas será el resultado de la operación atritmetica
¿Puedes explicarlo mejor?

Yo tengo:

select (consulta_1)/(consulta_2) from dual;

¿Cómo dices de hacer el join ahí?
  #7 (permalink)  
Antiguo 17/07/2007, 06:17
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Re: Realizar operación aritmética con el resultado de dos consultas

Depende de las dos consultas y que te devuelvan el mismo nº de filas
  #8 (permalink)  
Antiguo 18/07/2007, 02:03
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
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)  
Antiguo 19/07/2007, 03:41
Avatar de MACGREGOR  
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 19 años, 3 meses
Puntos: 0
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/07/2007 a las 03:47
  #10 (permalink)  
Antiguo 19/07/2007, 11:38
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
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)  
Antiguo 02/08/2007, 04:26
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
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)  
Antiguo 02/08/2007, 07:39
Avatar de MACGREGOR  
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 19 años, 3 meses
Puntos: 0
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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 21:11.