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

Contar numero de llamadas por hora

Estas en el tema de Contar numero de llamadas por hora en el foro de Mysql en Foros del Web. Hola: Deseo hacer un listado del numero de llamadas que se registran, separados en rangos de 1 hora. Las llamadas las registro en una tabla ...
  #1 (permalink)  
Antiguo 03/10/2006, 18:30
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 10 meses
Puntos: 1
Contar numero de llamadas por hora

Hola:
Deseo hacer un listado del numero de llamadas que se registran, separados en rangos de 1 hora.
Las llamadas las registro en una tabla en el campo "hora".
La hora de atencion es de 8:00 a 21:00.
El formato seria:
8 - 9 : 15
9 - 10 : 23
10 -11 : 15

Código PHP:
select count(h.hora)
from h_desk h
where h
.hora >= '08:00:00' 
and h.hora '09:00:00'
and h.fecha '2006-10-03' 
Lo unico q se me ocurre es ponerlo dentro de PHP y hacer que me ejecute la consulta para cada hora.
Pero es posible hacerlo sin PHP ???

Gracias.
__________________
:adios:

Última edición por miglos; 03/10/2006 a las 18:36
  #2 (permalink)  
Antiguo 03/10/2006, 23:39
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 10 meses
Puntos: 1
solución temporal...

bueo, esto es lo que hice, pero me imagino debe haber forma de optimizar esta consulta, de momento lo presento asi:
Código PHP:
<table width="60%" border="1">
    <tr>
    <td>Horas</td><td>Llamadas</td>
    </tr>
<?
    mysql_connect
(cnxHost(),cnxUsuario(),cnxPassword());
    
mysql_select_db(cnxBaseDatos());
    
$i=8;    $j=9;
    while (
$i 21)
    {
        
$select "select 'De $i a $j' As Horas, count(h.hora) as Llamadas from h_desk h ";
        
$select.= "where h.hora >= '$i:00:00' and h.hora < '$j:00:00' and h.fecha = '2006-10-03'";
        
$i++;
        
$j++;
    
$res=mysql_query(cnxBaseDatos(),$select);
    
$row=mysql_fetch_array($res);
    
?>
    <tr>
    <td><? echo $row["Horas"];?></td><td><? echo $row["Llamadas"];?></td>
    </tr>
    <?
    
}
    
?>
</table>
Si alguien me ayuda a mejorar la solución a este problema, le agradeceré mucho, igualmente si hay alguna recomendación en cuanto al código.
__________________
:adios:
  #3 (permalink)  
Antiguo 11/10/2006, 01:46
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 10 meses
Puntos: 1
Hola, para este caso, al final muestro la fila, con el total de llamadas del día.
Ahora quisiera que me ayuden, ¿cómo muestro el porcentaje de llamadas para cada hora?

Código PHP:
<table width="60%" border="1"> 
    <tr> 
    <td>Horas</td><td>Llamadas</td> 
    </tr> 
<? 
    mysql_connect
(cnxHost(),cnxUsuario(),cnxPassword()); 
    
mysql_select_db(cnxBaseDatos()); 
    
$i=8;    $j=9
    while (
$i 21
    { 
        
$select "select 'De $i a $j' As Horas, count(h.hora) as Llamadas from h_desk h "
        
$select.= "where h.hora >= '$i:00:00' and h.hora < '$j:00:00' and h.fecha = '2006-10-03'"
        
$i++; 
        
$j++; 
    
$res=mysql_query(cnxBaseDatos(),$select); 
    
$row=mysql_fetch_array($res); 
    
?> 
    <tr> 
    <td><? echo $row["Horas"];?></td><td><? echo $row["Llamadas"];?></td> 
    </tr> 
    <? 
 $total
+=$row["Llamadas"];   

    
?> 
<tr>
<td>Total>/td><td><? echo $total?></td>
</tr>
</table>
__________________
:adios:
  #4 (permalink)  
Antiguo 11/10/2006, 04:15
 
Fecha de Ingreso: octubre-2006
Mensajes: 30
Antigüedad: 18 años, 1 mes
Puntos: 0
Creo que lo puedes hacer en una sola consulta:

SELECT HOUR(Tabla2.hora) AS HORA, Sum(Tabla2.llamada) AS total
FROM Tabla2
GROUP BY HOUR(Tabla2.hora);
  #5 (permalink)  
Antiguo 11/10/2006, 10:42
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 10 meses
Puntos: 1
Saludos vnam04!
Muchas gracias por tu ayuda, es cierto lo que pones, con una pequeña modificacion, muestra las horas en que hubo llamadas y el numero de llamadas correspondientes....en una sola consulta.
Código PHP:
mysqlSELECT HOUR(h_desk.hora) AS HORAcount(h_desk.hora) AS total
FROM h_desk
where h_desk
.fecha '2006-10-09'
GROUP BY HOUR(h_desk.hora);
+------+-------+
HORA total |
+------+-------+
|    
|     |
|   
10 |     |
|   
11 |     |
|   
12 |     |
|   
14 |     |
|   
16 |     |
|   
17 |    10 |
|   
18 |     |
|   
19 |     |
+------+-------+
9 rows in set 
Ahora, es posible hacer lo mismo para mostrar el porcentaje correspondiente en una 3era columna?
__________________
:adios:
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 22:15.