Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-12-2008
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Talking 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

Última edición por salvica fecha: 15-12-2008 a las 01:36:47.
Responder Con Cita
  #2  
Antiguo 15-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
¿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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 15-12-2008
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
¿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
Gracias Lepe, exactamente ese era el problema.

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

Salvica
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Nuevo en el club, nuevo en el trabajo, nuevo en la vida winzo La Taberna 26 29-04-2008 19:13:52
consultas con between odrack SQL 6 23-04-2008 23:11:20
consultas con like Choclito Firebird e Interbase 1 02-01-2008 21:11:44
Consultas SQL V.S. Consultas Clipper AGAG4 SQL 7 20-12-2005 15:59:31
año nuevo, problema nuevo maruenda Varios 4 05-01-2004 00:17:58


La franja horaria es GMT +2. Ahora son las 03:52:53.


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