Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/01/2012, 17:37
Avatar de gnzsoloyo
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: Consulta posible?

Bueno, es bastante simple: Como la columna fecha_hora se supone que contiene tanto la fecha como la hora del ingreso, la respuesta es agrupar por esa columna, como te dije, pero aplicando la función HOUR() sobre ese dato:
Código MySQL:
Ver original
  1.     id_lab, HOUR(fecha_hora) Hora_Ingreso, COUNT(*) Cantidad_ingresos
  2. FROM tabla
  3. GROUP BY Hora_ingreso;
Esto devuelve el resultado agrupado por horas, en función del primer registro encontrado con cada hora distinta. Para ordenarlos de mayor a menor habría que ordenar además por Cantidad_ingresos:

Código MySQL:
Ver original
  1.     id_lab, HOUR(fecha_hora) Hora_Ingreso, COUNT(*) Cantidad_ingresos
  2. FROM tabla
  3. GROUP BY Hora_ingreso
  4. ORDER BY Cantidad_ingresos DESC;
Ahora bien, si sólo quieres la hora mayor, necesitaríamos usar LIMIT para que nos devuelva sólo el primer resultado. Eso es evidente.
Pero hay un problema: el LIMIT usado en una consulta con GROUP BY no necesariamente devuelve el resultado esperado porque su implementación tiene algunos detalles que son complejos de explicar. Lo que hace es leer, agrupar, aplicar el límite y luego ordenar, lo que causará que si el mayor no está en el limite encontrado, el ordenamiento de mayor a menor sea erroneo porque suprimirá registros que necesitas.
Esto puede parecer raro, pero hay razones por las cuales la lógica usada en la implementación sea esa. No vienen al caso.
Como sea, lo mejor para resolver el problema es hacer que toda esta consulta se transforme en subconsulta, y usar el LIMIT en la exterior:
Código MySQL:
Ver original
  1.     id_lab, Hora_Ingreso, Cantidad_ingresos
  2.     (SELECT
  3.         id_lab, HOUR(fecha_hora) Hora_Ingreso, COUNT(*) Cantidad_ingresos
  4.     FROM tabla
  5.     GROUP BY Hora_ingreso) T1
  6. ORDER BY Cantidad_ingresos DESC

Eso debería funcionar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)