Por cada día, la primera entrada y la última salida de cada empleado es su jornada laboral (corrígeme si no es así). Lo que necesitamos es coger la pareja de filas salida-entrada que se encuentran dentro de esa jornada laboral (que corresponderían al descanso), sacar el tiempo entre una y otra y restárselo al tiempo de la jornada laboral.
Por si no me he explicado muy bien, supongamos que cada linea es un registro de tu tabla. Sería lo que deja un empleado en un día:
EntradaJornada 8:00
SalidaDescanso 14:00
EntradaDescanso 14:30
SalidaJornada 17:00
En la consulta de cada día, para cada empleado buscas los dos registros centrales (los que estén entre el tiempo de la primera entrada y el tiempo de la última salida) que te indican el tiempo de descanso y lo restas al tiempo que te dan los dos registros exteriores (los que te marcan la jornada laboral). Para el tema de fichar dos veces ya habría que poner más controles, pero creo que de esta forma puedes sacarlo con un procedure sencillito.