Oracle - Saber la cantidad de registros en un intervalo de 5 minutos

 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado 1 puesto en Oracle (en relación al último mes)
Gráfica de Oracle

Saber la cantidad de registros en un intervalo de 5 minutos

Publicado por Jhonas (5 intervenciones) el 13/02/2019 03:16:40
Hola que tal, tengo mi query que me muestra el total de registros, por minutos pero como puedo saber cada 5 minutos el total de los registros ?


1
2
3
4
5
SELECT trunc(when_) , to_char(when_, 'MI' ),
count (when_)
FROM std_trace
GROUP BY trunc(when_), to_char(when_,'MI')
ORDER BY 2 ASC;


saludos!
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
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Saber la cantidad de registros en un intervalo de 5 minutos

Publicado por Rafael (328 intervenciones) el 13/02/2019 11:21:42
Hola, Jhonas:

Creo entender lo que estas buscando ...
aun y cuando el enunciado de la pregunta pudiese generar multiples y diversas respuestas....

Ahora tratare de ayudarte...

Respuesta A:
dices: "como puedo saber cada 5 minutos"
Pues ejecutas cada 5 minutos la consulta que has realizado... asi de simple...

Respuesta B:
Quizas lo que quieres es obtener totales con intervalos de 5 minutos...
Luego entonces el primer problema esta en como establecer esos intervalos...

Respuesta B-1:
Actualmente tu consulta (query) devuelve totales contando registros que ocurren en X minuto sin contemplar la hora o segundo...
Ejemplo:
Registro 1 2019/02/01 10:01:53
Registro 2 2019/02/01 07:01:35
Registro 3 2019/02/01 18:01:01
Estos tres registros se sumaran en tu query por que los tres estan en el minuto 1, aunque no coincidan las las horas ni los segundos...
Entonces quiero entender que esto probablemente sea incorrecto....

Respuesta B-2:
Ahora bien quiero entender que lo que quieres es sumar registros por intervalos de 5 minutos ....

Partimos de los siguientes conceptos:
El dia tiene 24 hrs, cada hora tiene 60 Minutos, cada hora 12 (60/5) intervalos de 5 minutos.
Por lo tanto requerimos al dia 288 intervalos ...

La palabra CLAVE intervalo

¿Como generamos los 288 intervalos de la nada?
Podriamos crear una tabla con ello.. pero tambien hacerlo de un forma dinamica con la siquiente query:
1
2
3
4
SELECT TO_CHAR(TO_DATE('20190213', 'YYYYMMDD') + (INTERVAL '5' MINUTE) * (ROWNUM-1), 'YYYYMMDD HH24:MI:SS') AS INICIO
     , TO_CHAR(TO_DATE('20190213', 'YYYYMMDD') + (INTERVAL '5' MINUTE) * ROWNUM, 'YYYYMMDD HH24:MI:SS')     AS FIN
FROM   DUAL
CONNECT BY LEVEL <= 288

Esto te da el dia de hoy (13 de Octubre) dividido en itervalos de 5 min...

Segundo concepto ES POSIBLE QUE NO tengan datos ...
Pero ademas... tenemos que comparar peras con peras...
Y al final formateamos la salida

Con lo cual te quedaria un query similar a esto
1
2
3
4
5
6
7
8
9
10
SELECT TO_CHAR(INICIO, 'YYYYMMDD HH24:MI:SS') AS INI
     , TO_CHAR(FIN, 'YYYYMMDD HH24:MI:SS') AS FIN
     , (SELECT COUNT(*)
        FROM   std_trace
        WHERE  when_ >= INICIO
        AND    when_ <  FIN) AS CONTEO
FROM   (SELECT TO_DATE('20190213', 'YYYYMMDD') + (INTERVAL '5' MINUTE) * (ROWNUM-1) AS INICIO
             , TO_DATE('20190213', 'YYYYMMDD') + (INTERVAL '5' MINUTE) * ROWNUM     AS FIN
        FROM   DUAL
        CONNECT BY LEVEL <= 288)

Espero haber adivinado lo que necesitabas... si no es asi.. hay que reformular correctamente la pregunta....

Pd. Si a ti te sirve la infor a mi me sirve el +1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 9
Ha aumentado 1 puesto en Oracle (en relación al último mes)
Gráfica de Oracle

Saber la cantidad de registros en un intervalo de 5 minutos

Publicado por jhonas (5 intervenciones) el 14/02/2019 14:35:55
Hola Rafa,

Muchas gracias por la ayuda,

así quedo mi query, pero me esta mostrando también los campos vacíos, como puedo hacerle para que no me traiga los campos vacíos ?


1
2
3
4
5
6
7
8
9
10
SELECT TO_CHAR(INICIO, 'YY/MM/DD HH24:MI:SS') AS INI
     , TO_CHAR(FIN, 'YY/MM/DD HH24:MI:SS') AS FIN
     , (SELECT COUNT(*)
        FROM  std_Trace
        WHERE  when_ >= INICIO
        AND    when_ <  FIN) AS CONTEO
FROM   (SELECT when_ + (INTERVAL '5' MINUTE) * (ROWNUM-1) AS INICIO
             , when_ + (INTERVAL '5' MINUTE) * ROWNUM     AS FIN
        FROM   std_trace
        CONNECT BY LEVEL <= 288);


saludos!
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
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Saber la cantidad de registros en un intervalo de 5 minutos

Publicado por Rafael (328 intervenciones) el 15/02/2019 10:15:55
Hola

Volvemos a que preguntas incorrectamente
"como puedo hacerle para que no me traiga los campos vacíos "

Solo estas usando un CAMPO, "when_"
Generas dos columnas INICIO y FIN que NO pueden estar vacias...
¿A que te refieres con los "CAMPOS VACIOS"?

Estoy seguro que si formulas correctamente la pregunta encuentras tu solo la respuesta...
Jugando de nuevo al adivino... La pregunta seria:
¿Como puedo obtener solo aquellos intervalos que el conteo sea mayor a CERO?

Luego entonces si vez que ordenas la pregunta con la informacion que realmente necesitas puedes decucir que esto es una opcion :
1
2
3
4
5
6
7
8
9
10
11
12
SELECT * FROM (
SELECT TO_CHAR(INICIO, 'YY/MM/DD HH24:MI:SS') AS INI
     , TO_CHAR(FIN, 'YY/MM/DD HH24:MI:SS') AS FIN
     , (SELECT COUNT(*)
        FROM  std_Trace
        WHERE  when_ >= INICIO
        AND    when_ <  FIN) AS CONTEO
FROM   (SELECT when_ + (INTERVAL '5' MINUTE) * (ROWNUM-1) AS INICIO
             , when_ + (INTERVAL '5' MINUTE) * ROWNUM     AS FIN
        FROM   std_trace
        CONNECT BY LEVEL <= 288)
) WHERE CONTEO > 0;  <<<<<---- ¿Ves como se cumple el requisito de la pregunta?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 9
Ha aumentado 1 puesto en Oracle (en relación al último mes)
Gráfica de Oracle

Saber la cantidad de registros en un intervalo de 5 minutos

Publicado por Jhonas (5 intervenciones) el 18/02/2019 14:45:47
Hola que tal Rafa,

Tienes razón la pregunta sería ¿Cómo puedo obtener solo aquellos intervalos que el conteo sea mayor a CERO?


Tengo un problema al momento de hacer la consulta tarda demasiado y no la realiza.

1
2
3
4
5
6
7
8
9
10
11
12
SELECT * FROM (
SELECT TO_CHAR(INICIO, 'YY/MM/DD HH24:MI:SS') AS INI
     , TO_CHAR(FIN, 'YY/MM/DD HH24:MI:SS') AS FIN
     , (SELECT COUNT(*)
        FROM  std_Trace
        WHERE  when_ >= INICIO
        AND    when_ <  FIN) AS CONTEO
FROM   (SELECT when_ + (INTERVAL '5' MINUTE) * (ROWNUM-1) AS INICIO
             , when_ + (INTERVAL '5' MINUTE) * ROWNUM     AS FIN
        FROM   std_trace
        CONNECT BY LEVEL <= 288)
) WHERE CONTEO > 0;


saludos!
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
sin imagen de perfil
Val: 9
Ha aumentado 1 puesto en Oracle (en relación al último mes)
Gráfica de Oracle

Saber la cantidad de registros en un intervalo de 5 minutos

Publicado por Jhonas (5 intervenciones) el 18/02/2019 20:57:26
disculpa este es el query,


SELECT count (*) From (
SELECT TO_CHAR(INICIO, 'YY/MM/DD HH24:MI:SS') AS INI
, TO_CHAR(FIN, 'YY/MM/DD HH24:MI:SS') AS FIN
, (SELECT COUNT(*)
FROM std_Trace
WHERE when_ >= INICIO
AND when_ < FIN) AS CONTEO
FROM (SELECT when_ + (INTERVAL '5' MINUTE) * (ROWNUM-1) AS INICIO
, when_ + (INTERVAL '5' MINUTE) * ROWNUM AS FIN
FROM std_trace
CONNECT BY LEVEL <= 288))
HAVING COUNT(CONTEO) > 0;
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
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Saber la cantidad de registros en un intervalo de 5 minutos

Publicado por Rafael (328 intervenciones) el 19/02/2019 10:41:57
Este segundo contaddor no tiene sentido alguno...
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