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

COntar registros

Estas en el tema de COntar registros en el foro de Mysql en Foros del Web. Hola a todos... mi pregunta es la siguiente: Tengo en mysql esta tabla: Hora | nombre | apellido | --------------------------------- 10:01 | luis | runge ...
  #1 (permalink)  
Antiguo 08/08/2008, 20:06
Avatar de lrunge  
Fecha de Ingreso: agosto-2005
Ubicación: En algun lugar de Caracas
Mensajes: 165
Antigüedad: 18 años, 9 meses
Puntos: 4
COntar registros

Hola a todos... mi pregunta es la siguiente:

Tengo en mysql esta tabla:

Hora | nombre | apellido |
---------------------------------
10:01 | luis | runge
10:12 | pedro | perez
10:15 | carlos | Gonzalez
10:50 | juan | diaz
11:08 | cris | ramos
11:40 | vero | malave
12:58 | raul | castro
12:59 | cesar | gomez
13:17 | pablo | falcon
etc....

Quisiera saber como puedo contar los registros por el campo hora, por ejm:

hora | cantidad
-------------------
10 | 4
11 | 2
12 | 2
13 | 1

se que SELECT COUNT( * ) AS `Filas` , `hora` FROM `tabla`GROUP BY `hora` ORDER BY `hora` solo me va a contar los registros en que los 5 caracteres de la hora sean exactamente iguales, y solo quiero agruparlos y contarlos por los 2 primeros, mejor dicho, agruparlo por la hora sin tener en cuenta los minutos

Gracias a todos
__________________
"La sencillez de una respuesta, sera inversamente proporcional a su explicacion" Luis Runge
  #2 (permalink)  
Antiguo 09/08/2008, 02:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: COntar registros

prueba agrupando no por todo el campo hora, sino por la hora de ese campo hora. Pero antes debes comprobar que el campo es de tipo time. No veo los segundos y tal vez hayas almacenado con un tipo que no sea time. Si lo es, aceptará la función HOUR() y podrás utilizar esto:

SELECT HOUR (hora), COUNT(*) total_por_hora FROM tabla GROUP BY HOUR (hora) ORDER BY HOUR (hora)

Si lo tienes almacenado como alguno de los tipos que almacenan cadenas de texto (varchar, etc.), sería, en mi opinión, un error de planteamiento, pero para hacer lo que quieres podrías utilizar LEFT() o SUBSTRING() . Pero para añadir los parámetros a esa funciones tendríamos que saber cómo almacenas las horas de 1 a 9, si como 01:00 o como 1:00. Si fuera 01:00, te bastaría con poner
SELECT LEFT (hora,2), COUNT(*) total_por_hora FROM tabla GROUP BY LEFT (hora,2) ORDER BY LEFT (hora,2).Habría alguna otra posibilidad. No obstante, yo te aconsejaría ver si se trata de un campo tipo time. Y si no es así, estudiar la posibilidad de su conversión para hacerlo más útil y las operaciones más rápidas. Por supuesto, no intentes el cambio de tipo sin más. Tendrías que añadir segundos en ese campo antes de hacer el cambio a los registros almacenados y modificar la programación que alimenta el campo para que añadiera también segundos.

Última edición por jurena; 09/08/2008 a las 05:21
  #3 (permalink)  
Antiguo 09/08/2008, 17:11
Avatar de lrunge  
Fecha de Ingreso: agosto-2005
Ubicación: En algun lugar de Caracas
Mensajes: 165
Antigüedad: 18 años, 9 meses
Puntos: 4
Respuesta: COntar registros

Esta en un campo TIME, y como dije antes, si cuento por ese campo, solo me contara los registros que en ese campo sean identicos, hora:minuto:segundo y solo quiero contarlos por hora
__________________
"La sencillez de una respuesta, sera inversamente proporcional a su explicacion" Luis Runge
  #4 (permalink)  
Antiguo 09/08/2008, 17:15
Avatar de lrunge  
Fecha de Ingreso: agosto-2005
Ubicación: En algun lugar de Caracas
Mensajes: 165
Antigüedad: 18 años, 9 meses
Puntos: 4
Respuesta: COntar registros

SIIIIIIIIIIIIIIIII, funciona!!!

Muchisimas gracias
__________________
"La sencillez de una respuesta, sera inversamente proporcional a su explicacion" Luis Runge
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 09:56.