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

10 ultimas fechas de cada elemento

Estas en el tema de 10 ultimas fechas de cada elemento en el foro de Oracle en Foros del Web. Hola, tengo una tabla con mediciones hechas en distintas fechas para una serie de elementos. ENTITYID y FECHAHORA son la PK de la tabla. Necesito ...
  #1 (permalink)  
Antiguo 22/11/2006, 10:12
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años
Puntos: 9
10 ultimas fechas de cada elemento

Hola, tengo una tabla con mediciones hechas en distintas fechas para una serie de elementos. ENTITYID y FECHAHORA son la PK de la tabla.

Necesito una query que me de las 10 ultimas fechas en que hubo medicion en cada elemento ENTIYID, es decir, me dara 10 filas (o menos si hubo menos de 10 mediciones) por cada elemento.

Tengo esta query:

Código:
SELECT ENTITYID, 
          TO_CHAR(FECHAHORA, 'DD/MM/YYYY HH24:MI') AS FECHA
    FROM MEDICION_CALIDAD M1 
   WHERE M1.FECHAHORA IN (SELECT M2.FECHAHORA 
                            FROM MEDICION_CALIDAD M2 
                           WHERE M2.ENTITYID = M1.ENTITYID AND ROWNUM <= 10)
  ORDER BY M1.FECHAHORA DESC
El problema es que dentro de la subquery no me deja hacer "ORDER BY FECHAHORA DESC" (me dice MISSING RIGHT PARENTESSIS), y el ROWNUM no me asegura que selecciona las 10 ultimas fechas, de hecho selecciona las fechas un poco al azar.

Tiene que resolverse en una sola query, ya que es para definir una vista.
  #2 (permalink)  
Antiguo 24/11/2006, 04:09
 
Fecha de Ingreso: noviembre-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
Prueba con las Funciones Analíticas

Buenas, yo probaría con las funciones analíticas. Prueba a ver si esta select te pudiese funcionar:

select ENTITYID,TO_CHAR(FECHAHORA, 'DD/MM/YYYY HH24:MI') from (
select ENTITYID,FECHAHORA, row_number() over (partition by ENTITYID
order by FECHAHORA desc) rn from MEDICION_CALIDAD)
where rn<5
order by 1,2 desc

Un saludo.
  #3 (permalink)  
Antiguo 30/11/2006, 07:33
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años
Puntos: 9
Muchas gracias, funciona muy bien, eso del
Cita:
over (partition by ENTITYID
order by FECHAHORA desc)
¿se puede usar también con otras funciones agregadas tipo sum etc?
  #4 (permalink)  
Antiguo 04/12/2006, 01:52
 
Fecha de Ingreso: noviembre-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
Buenas, en principio, creo que sí se puede. Las funciones analíticas son muy poderosas, se pueden crear ventanas, coger un dato de la fila siguiente o anterior, etc...
Por ejemplo, en orape.net aquí tienes un buen documento sobre las funciones analíticas (es que todavía no me dejan publicar enlaces, tengo pocos mensajitos )
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




La zona horaria es GMT -6. Ahora son las 02:32.