Hola Brahyam:
En tu post no lo mencionas, pero me imagino que tos campos fecha_ini y fecha_fin son de tipo DATETIME. Para obtener las horas laboradas por un empleado en un día simplemente tendrías que restar las fechas y utilizar la función HOUR, agrupando por empleado y por fecha, más o menos así:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.11 sec)
-> (1, '2011-08-16 07:00', '2011-08-16 09:00'),
-> (1, '2011-08-16 11:00', '2011-08-16 13:00'),
-> (1, '2011-08-16 14:00', '2011-08-16 17:00'),
-> (2, '2011-08-16 07:00', '2011-08-16 13:00'),
-> (2, '2011-08-16 14:00', '2011-08-16 17:00');
Query OK, 5 rows affected (0.06 sec)
mysql
> SELECT empleado_id
, SUM(HOUR(fecha_fin
- fecha_ini
)) horas_trabajadas
+-------------+------------------+
| empleado_id | horas_trabajadas |
+-------------+------------------+
| 1 | 7 |
| 2 | 9 |
+-------------+------------------+
Ahora bien, esta consulta tiene el supuesto que la hora de inicio y fin corresponden al mismo día, es decir, no funcionaría por ejemplo para un turno nocturno, donde la fecha de inicio es por la noche y la fecha de fin es por el día, pero de un día distinto. Si en tu proyecto manejas este tipo de casos deberás tratarlos de manera especial
Dale un vistazo al código y nos comentas.
Saludos
Leo.