Podes reunirlos de esta manera:
select extract(epoch from o.fecha_final-fecha_inicial)/60, *
from
orden_registro o
inner join tiempo_para t on
o.empleado_id=t.empleado_id and
(
t.fecha_incial between o.fecha_inicial and o.fecha_final or
t.fecha_final between o.fecha_inicial and o.fecha_final
)

te dejo el cálculo de restar la segunda parte que lo podes hacer por
ejemplo con algunos case when

El 9 de septiembre de 2016, 19:46, mauricio pullabuestan <
jmaurici...@yahoo.es> escribió:

> Buen día
>
> Tengo la tabla orden_registro donde el empleado guarda la fecha hora
> inicial, fecha hora final que les toma realizar un proceso.
> En la tabla tiempo_para se registra la fecha hora inicial, fecha hora
> final del tiempo de para.
>
>
> Necesito hacer un Sql que me de los registros de la tabla orden_registro
> con 3 columnas adicionales
> 1.- tiempo total que toma realizar el proceso (tabla orden_registro
> fecha_final - fecha_inicial).
> 2.- tiempo de para (tabla tiempo_para) solamente el periodo de tiempo que
> se solapa.
> 3.- tiempo neto (tiempo total - tiempo de para).
>
> El tiempo de para puede afectar a uno o 2 registros de la tabla
> orden_registro.
>
> Ej.
> Tiempo de para afecta a un solo registro.
> El empleado X0012 registra
> Tabla orden_registo
> 2016-09-07 06:20 a 2016-09-07 06:40 en realizar el proceso 'O-15' tiempo
> total 20'
>
> En ese tiempo se registro
> Tabla tiempo_para2016-09-07 06:22 a 2016-09-07 06:25, 3' que afecta a un
> registro de la tabla orden_registro
>
>
> El resultado seria
> 2016-09-07 06:20:00 a 2016-09-07 06:40:00 en realizar el proceso 'O15'
> tiempo total 20' tiempo de para 3' tiempo total 17'
>
>
> Tiempo de para afecta a 2 registros
> Tabla orden_registo
> 2016-09-07 07:45:00 a 2016-09-07 08:10:00 en realizar el proceso 'O-10'
> tiempo total 25'
> 2016-09-07 08:10:00 a 2016-09-07 08:48:00 en realizar el proceso 'O-15'
> tiempo total 38'
>
> En ese tiempo se registro
> Tabla tiempo_para2016-09-07 08:03 a 2016-09-07 08:12, 9' de para, que
> afecta a los 2 registros
>
>
> El resultado seria
> 2016-09-07 07:45:00 a 2016-09-07 08:10:00 en realizar el proceso 'O-10'
> tiempo total 25' tiempo de para 7' tiempo neto 18'
> 2016-09-07 08:10:00 a 2016-09-07 08:48:00 en realizar el proceso 'O-15'
> tiempo total 38' tiempo de para 2' tiempo neto 36'
>
> Resultado esperado (disculpas si no es ligible el resultado esperado).
> Empleado Orden     Proceso  fecha Inicial      Fecha final       Total
>  Para    Neto
> X0012    8797911   O-15     2016-09-07 06:20   2016-09-07 06:40  00:20
>  00:03   00:17
> X0012    8788288   O-15     2016-09-07 07:10   2016-09-07 07:30  00:20
>  00:00   00:20
> X0012    8783454   O-15     2016-09-07 07:30   2016-09-07 07:45  00:15
>  00:00   00:15
> X0012    AI-8      O-10     2016-09-07 07:45   2016-09-07 08:10  00:25
>  00:07   00:18
> X0012    8796366   O-15     2016-09-07 08:10   2016-09-07 08:48  00:38
>  00:02   00:36
>
>
> Hice algunos intentos utilizando generate series y
>
> Select *
>
> From t
> except
> select *
>
> Pero resulta algo engorroso.
>
> Existe alguna manera fácil de hacerlo?
>
> Scrip para generar tabla y data de ejemplo
>
> DROP TABLE IF EXISTS "trabajo_proceso"."orden_registro";
> CREATE TABLE "trabajo_proceso"."orden_registro" (
> "empleado_id" varchar(5) COLLATE "default",
> "orden" varchar(15) COLLATE "default",
> "operacion" varchar(4) COLLATE "default",
> "fecha_inicial" timestamp(6),
> "fecha_final" timestamp(6),
> "orden_registro_id" int4 DEFAULT 0 NOT NULL
> )
> WITH (OIDS=FALSE) ;
>
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ARM-8786596', 'O-15', '2016-09-07 06:00:00', '2016-09-07 06:20:00', '1');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ARM-8797911', 'O-15', '2016-09-07 06:20:00', '2016-09-07 06:40:00', '2');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ARM-8794746', 'O-15', '2016-09-07 06:40:00', '2016-09-07 07:00:00', '3');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ARM-8789909', 'O-15', '2016-09-07 07:00:00', '2016-09-07 07:10:00', '4');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ARM-8788288', 'O-15', '2016-09-07 07:10:00', '2016-09-07 07:30:00', '5');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ARM-8783454', 'O-15', '2016-09-07 07:30:00', '2016-09-07 07:45:00', '6');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012', 'AI-8',
> 'O-10', '2016-09-07 07:45:00', '2016-09-07 08:10:00', '7');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ARM-8796366', 'O-15', '2016-09-07 08:10:00', '2016-09-07 08:48:00', '8');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ACA-1537543', 'O-10', '2016-09-07 08:48:00', '2016-09-07 08:55:00', '9');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ACA-1537441', 'O-05', '2016-09-08 10:23:00', '2016-09-08 10:27:00', '10');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ACA-1537426', 'O-10', '2016-09-08 10:27:00', '2016-09-08 11:09:00', '11');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ARM-8789258', 'O-15', '2016-09-08 11:09:00', '2016-09-08 11:24:00', '12');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ARM-8788558', 'O-10', '2016-09-08 11:24:00', '2016-09-08 11:26:00', '13');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ARM-8785940', 'O-15', '2016-09-08 11:26:00', '2016-09-08 12:23:00', '14');
> INSERT INTO "trabajo_proceso"."orden_registro" VALUES ('X0012',
> 'ACA-1537547', 'O-11', '2016-09-08 12:23:00', '2016-09-08 12:41:00', '15');
>
> ALTER TABLE "trabajo_proceso"."orden_registro" ADD PRIMARY KEY
> ("orden_registro_id");
>
>
>
> DROP TABLE IF EXISTS "trabajo_proceso"."tiempo_para";
> CREATE TABLE "trabajo_proceso"."tiempo_para" (
> "empleado_id" varchar(5) COLLATE "default",
> "fecha_incial" timestamp(6),
> "fecha_final" timestamp(6)
> )
> WITH (OIDS=FALSE) ;
>
> INSERT INTO "trabajo_proceso"."tiempo_para" VALUES ('X0012', '2016-09-07
> 06:22:00', '2016-09-07 06:25:00');
> INSERT INTO "trabajo_proceso"."tiempo_para" VALUES ('X0012', '2016-09-07
> 08:03:00', '2016-09-07 08:17:00');
> INSERT INTO "trabajo_proceso"."tiempo_para" VALUES ('X0012', '2016-09-08
> 11:12:00', '2016-09-08 11:18:00');
>
>
>
> Saludos.
> Mauricio
>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org
> )
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>

Responder a