Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   De nuevo con las consultas (https://www.clubdelphi.com/foros/showthread.php?t=62280)

salvica 15-12-2008 01:31:27

De nuevo con las consultas
 
Hola a tod@s, de nuevo complicándome la vida ;)

Introducción:
Tengo una tabla con los siguientes campos:
- CLAVE --> la clave ;)
- FECHA --> la fecha del registro (año/mes/dia)
- HORA ---> la hora del mismo (hora/minutos/segundos)
(MySql, Zeos y D7)

Problema:
Necesito sacar la suma de los valores de un intervalo de tiempo (por ejemplo 5 minutos) para luego hacer otros cálculos, osea:
Código:

HORA_ORIGEN    VALOR    DESDE      HASTA        DEBE SACAR
===========    ======    ========  ========      ==========
00:00:00          0      00:00:00  00:05:00          0
00:01:00          0      00:01:00  00:06:00        100
00:02:00          0      00:02:00  00:07:00        190
00:03:00          0      00:03:00  00:08:00        240
00:04:00          0      00:04:00  00:09:00        270
00:05:00          0      00:05:00  00:10:00        270
00:06:00        100      00:06:00  00:11:00        270
00:07:00        90      00:07:00  00:12:00        180
00:08:00        50      00:08:00  00:13:00        90
00:09:00        30      00:09:00  00:14:00        40
00:10:00          0      00:10:00  00:15:00        30
00:11:00          0      00:11:00  00:16:00          0
00:12:00        10      00:12:00  00:17:00        30
00:13:00          0      00:13:00  00:18:00        20
00:14:00          0      00:14:00  00:19:00          0
00:15:00        20      00:15:00  00:20:00        20
...    siguen ceros

Para ello hago (bueno, quisiera hacer, porque saca datos donde deben haber cero)
1º - Saco todos los registros de la tabla (select principal)
2º - Para cada hora anterior, la suma de aquellos comprendidos entre esa hora y el intervalo (todo en minutos)
Código SQL [-]
SELECT clave, fecha, hora,
       (SELECT SUM(valor)
          FROM tabla AS p
         WHERE (MINUTE(p.hora) BETWEEN MINUTE(origen.hora) AND (MINUTE(origen.hora)+5))
       ) AS pluvio
  FROM tabla AS origen
¿Donde estoy metiendo "la pataza"?

Gracias por la ayuda
Salvica

Lepe 15-12-2008 12:38:12

¿podría ser debido a MINUTE?
No conozco esa función, pero todo indica que pillará los minutos sin tener en cuenta la hora ¿no?

Una opción podría ser multiplicar la hora por 60 y sumar los minutos en el sql de esa forma tenemos un número integer que represente la hora y minutos:

veremos si me explico.... (todo igual excepto el where)
Código SQL [-]
SELECT clave, fecha, hora,
       (SELECT SUM(valor)
          FROM tabla AS p
         WHERE (
          (HOUR(p.hora) *60)  + MINUTE(p.hora)   
           between (HOUR(origen.hora) *60)  + MINUTE(origen.hora)  
           and   (HOUR(origen.hora) *60)  + MINUTE(origen.hora) + 5)         
       ) AS pluvio
  FROM tabla AS origen

Saludos y suerte

salvica 15-12-2008 13:22:20

Cita:

Empezado por Lepe (Mensaje 330957)
¿podría ser debido a MINUTE?
No conozco esa función, pero todo indica que pillará los minutos sin tener en cuenta la hora ¿no?

Una opción podría ser multiplicar la hora por 60 y sumar los minutos en el sql de esa forma tenemos un número integer que represente la hora y minutos:

veremos si me explico.... (todo igual excepto el where)
Código SQL [-]SELECT clave, fecha, hora, (SELECT SUM(valor) FROM tabla AS p WHERE ( (HOUR(p.hora) *60) + MINUTE(p.hora) between (HOUR(origen.hora) *60) + MINUTE(origen.hora) and (HOUR(origen.hora) *60) + MINUTE(origen.hora) + 5) ) AS pluvio FROM tabla AS origen


Saludos y suerte

:D:D:D:D:D Gracias Lepe, exactamente ese era el problema.

No se porqué estaba esperando los minutos del día :mad::mad:, en vez de los minutos de la hora que es lo que da.

Salvica


La franja horaria es GMT +2. Ahora son las 18:27:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi