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

Agrupar por hora columna de fecha hora

Estas en el tema de Agrupar por hora columna de fecha hora en el foro de Bases de Datos General en Foros del Web. hola a todos, les agradeceria mucho me puedieran ayudar le explico lo que necesito hacer. Es correr un query para que me agrupe por cada ...
  #1 (permalink)  
Antiguo 01/09/2010, 14:03
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1
Antigüedad: 13 años, 8 meses
Puntos: 0
Agrupar por hora columna de fecha hora

hola a todos, les agradeceria mucho me puedieran ayudar le explico lo que necesito hacer. Es correr un query para que me agrupe por cada hora y sume dentro de cada hora cuantos registros hay en total y cuantos en status 0

columna 1 columna 2
fecha_crea status
27/08/2010 00:00 1
27/08/2010 00:04 0
27/08/2010 00:59 1
27/08/2010 01:01 1
27/08/2010 01:02 0
27/08/2010 01:06 0
27/08/2010 01:07 1
27/08/2010 01:15 0
27/08/2010 02:02 1
27/08/2010 02:03 1
27/08/2010 02:54 1
27/08/2010 02:59 0
27/08/2010 03:11 1
27/08/2010 03:13 1

resultado asi
creacion suma status
27/08/2010 00:00 3 1
27/08/2010 01:00 5 3
27/08/2010 02:00 4 1
27/08/2010 03:00 2 0
  #2 (permalink)  
Antiguo 01/09/2010, 15:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Agrupar por hora columna de fecha hora

La idea sería:
Tabla:
Código MySQL:
Ver original
  1. CREATE TABLE TABLA(
  2.    FECHA_HORA DATETIME,
  3.    `STATUS` INT UNSIGNED);

Datos (tomados de tu muestra, por lo que hubo que usar STR_TO_DATE() para convertirlos en DATETIME):
Código MySQL:
Ver original
  1. INSERT INTO TABLA
  2. (STR_TO_DATE('27/08/2010 00:00', '%d/%m/%Y %H:%i'), 1),
  3. (STR_TO_DATE('27/08/2010 00:04', '%d/%m/%Y %H:%i'), 0),
  4. (STR_TO_DATE('27/08/2010 00:59', '%d/%m/%Y %H:%i'), 1),
  5. (STR_TO_DATE('27/08/2010 01:01', '%d/%m/%Y %H:%i'), 1),
  6. (STR_TO_DATE('27/08/2010 01:02', '%d/%m/%Y %H:%i'), 0),
  7. (STR_TO_DATE('27/08/2010 01:06', '%d/%m/%Y %H:%i'), 0),
  8. (STR_TO_DATE('27/08/2010 01:07', '%d/%m/%Y %H:%i'), 1),
  9. (STR_TO_DATE('27/08/2010 01:15', '%d/%m/%Y %H:%i'), 0),
  10. (STR_TO_DATE('27/08/2010 02:02', '%d/%m/%Y %H:%i'), 1),
  11. (STR_TO_DATE('27/08/2010 02:03', '%d/%m/%Y %H:%i'), 1),
  12. (STR_TO_DATE('27/08/2010 02:54', '%d/%m/%Y %H:%i'), 1),
  13. (STR_TO_DATE('27/08/2010 02:59', '%d/%m/%Y %H:%i'), 0),
  14. (STR_TO_DATE('27/08/2010 03:11', '%d/%m/%Y %H:%i'), 1),
  15. (STR_TO_DATE('27/08/2010 03:13', '%d/%m/%Y %H:%i'), 1);

Consulta:
Código MySQL:
Ver original
  1.    DATE(FECHA_HORA) DIA,
  2.    HOUR(FECHA_HORA) HORA,
  3.    COUNT(*) SUMA,
  4.    SUM(`STATUS`) `STATUS`
  5. FROM TABLA
  6. GROUP BY HOUR(FECHA_HORA);

Resultado:
Código MySQL:
Ver original
  1. +------------+------+------+--------+
  2. | DIA        | HORA | SUMA | STATUS |
  3. +------------+------+------+--------+
  4. | 2010-08-27 |    0 |    3 |      2 |
  5. | 2010-08-27 |    1 |    5 |      2 |
  6. | 2010-08-27 |    2 |    4 |      3 |
  7. | 2010-08-27 |    3 |    2 |      2 |
  8. +------------+------+------+--------+
  9. 4 rows in set (0.00 sec)

Obviamente puede haber variaciones en cuanto a funciones de conversión de caracteres a DATETIME de acuerdo al DBMS que uses; este ejemplo fue desarrollado en MySQL. Oracle y SQL Server, por ejemplo, usan otras funciones distintas a STR_TO_DATE().

Consulta el manual de tu DBMS.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: agrupar, contar, mysql, fechas
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 04:59.