SQL - Consulta TOP cn AVG

 
Vista:

Consulta TOP cn AVG

Publicado por Diego (3 intervenciones) el 11/09/2007 18:37:53
Hola foro; esta es mi primera consulta asi que espero ser lo más explícito posible.
Quiero sacar el promedio del campo "cambio de la moneda" de los últimos 10 registros ingresados.
Es decir;

fecha ingreso, importe, moneda extranjera, cambio de la moneda
1) 11/09/2007 1000 reales 0.66
11/09/2007 1000 reales 0.66
10/09/2007 1000 reales 0.65
10/09/2007 1000 reales 0.65
09/09/2007 1000 reales 0.67
09/09/2007 1000 reales 0.67
08/09/2007 1000 reales 0.66
07/09/2007 1000 reales 0.63
06/09/2007 1000 reales 0.60
10) 06/09/2007 1000 reales 0.60
06/09/2007 1000 reales 0.60

Se entiende? que sume el "cambio de la moneda" desde 1) 11/09/2007 hasta 10) 06/09/2007 y saque el promedio.

hice esta consulta pero me da todo tipo de errores.
Me ayudan por favor.
select AVG (TOP 10 "cambio de la moneda") as PROMEDIO FROM rendicion WHERE moneda = 'REALES' order by "fecha de ingreso" desc"

Desde ya muchas gracias y un abrazo.
Diego.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta TOP cn AVG

Publicado por Mario Cruz (5 intervenciones) el 11/09/2007 19:53:22
no se si entendi bien pero quieres el promedio del campo "cambio de la moneda" ? de los ultimos 10 datos ingresados? o de una cierta fecha a otra?, deberias poner el nombre real de las columnas

----------- si es entre fechas-----------------------------
selec AVG("cambio de la moneda") as promedio
from rendicion
where fecha de ingreso between '06/09/2007' and '11/09/2007'

o quieres exactamente los ultimos 10 registros pues puede haber inserciones con la misma fecha(supongo), para ello hay que usar la funcion rownum y delimitarla entre los ultimos 10 registros
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta TOP cn AVG

Publicado por Diego (3 intervenciones) el 11/09/2007 23:00:10
Es como vos decis necesito los últimos 10 registros, me darías un ejemplo del rowrun? y si, efectivamente hay registros con la misma fecha
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta TOP cn AVG

Publicado por Mario Cruz (5 intervenciones) el 12/09/2007 17:17:01
rownum es una funcion que te dice el numero de fila pero solo puedes hacer operaciones del tipo where rownum<=algo porque oracle entiende que para >= siempre hay uno asi, entonces nunca devuelve nada.

bueno tu query se resuelve asi:


-------------------------------------------------------------------------------------------------------------------------
select AVG(cambiodelamoneda) as promedio
from (select rownum rnum, m.*
from(select cambiodelamoneda
from rendicion) m
where rownum<=(select max(rownum) from rendicion)
)
where rnum>=((select max(rownum) from rendicion)-10)
------------------------------------------------------------------------------------------------------------------------

Saludos
Mario Cruz
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta TOP cn AVG

Publicado por Diego (3 intervenciones) el 12/09/2007 22:28:18
Gracias por tu ayuda me has sido de mucha utilidad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar