Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wender Ferreira Batista

calculo de tempo de produção

Recommended Posts

Olá pessoal, estou criando um sistema onde tenho que saber o tempo médio de produção de um produto, e lançado em uma tabela a quantidade, o tempo inicial da processo, e o tempo final do processo. Depois em uma consulta tenho que fazer o calculo para chegar ao tempo médio.

 

no SQL abaixo fiz o calculo mas o resultado não sai em formato de hora, ele me deu um formato numérico preciso do resultado em hora, conto com a ajuda de vocês .

SELECT CAD_LAN_PRODUCAO.DATA, CAD_INPRODUTO.APELIDO AS PRODUTO, CAD_FUNCIONARIO.NOME, CAD_SETOR.NOME AS SETOR,
CAD_OPERACAO_SETOR.OPERACAO, SYS_STATUS.PARAMETRO AS UN, SUM(CAD_LAN_PRODUCAO.QTDE) AS QTDE,
(select (convert(varchar,CAD_LAN_PRODUCAO.HORA_INICIAL,108))) as INICIO,
(select (convert(varchar,CAD_LAN_PRODUCAO.HORA_FINAL,108))) as FIN,
(select (convert(varchar,((SELECT ISNULL(DATEDIFF(MI,(select (convert(varchar,CAD_LAN_PRODUCAO.HORA_INICIAL,108))),
(select (convert(varchar,CAD_LAN_PRODUCAO.HORA_FINAL,108)))),0) / (SELECT(SUM(CAD_LAN_PRODUCAO.QTDE))))),108))) as TEMPO_MIN_PÇ
FROM CAD_LAN_PRODUCAO INNER JOIN
CAD_FUNCIONARIO ON CAD_LAN_PRODUCAO.ID_FUNCIONARIO = CAD_FUNCIONARIO.ID INNER JOIN
CAD_OPERACAO_SETOR ON CAD_LAN_PRODUCAO.ID_OPERACAO_SETOR = CAD_OPERACAO_SETOR.ID INNER JOIN
SYS_STATUS ON CAD_LAN_PRODUCAO.ID_UNIDADE_PRODUTO = SYS_STATUS.ID_STATUS INNER JOIN
CAD_SETOR ON CAD_LAN_PRODUCAO.ID_SETOR_ORIGEM = CAD_SETOR.ID_SETOR INNER JOIN
CAD_INPRODUTO ON CAD_LAN_PRODUCAO.ID_PRODUTO = CAD_INPRODUTO.ID_INPRODUTO
GROUP BY CAD_FUNCIONARIO.NOME, CAD_OPERACAO_SETOR.OPERACAO, CAD_SETOR.NOME, SYS_STATUS.PARAMETRO, CAD_LAN_PRODUCAO.DATA,
CAD_FUNCIONARIO.NR_CARTAO, CAD_INPRODUTO.APELIDO, CAD_LAN_PRODUCAO.HORA_INICIAL, CAD_LAN_PRODUCAO.HORA_FINAL
HAVING (CAD_LAN_PRODUCAO.DATA BETWEEN CONVERT(DATETIME, '2014-03-01 00:00:00', 102) AND CONVERT(DATETIME, '2014-03-10 00:00:00', 102)) AND
(CAD_FUNCIONARIO.NR_CARTAO = N'50212')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz este post uma vez, trabalhando com Oracle mas creio que dá para adaptar a solução.

 

A ideia básica é reduzir a diferença para segundos e depois converter para dias horas minutos segundos

Compartilhar este post


Link para o post
Compartilhar em outros sites

BOM

 

CONSEGUI DIMINUIR A HORA E FORMATALA

 

SELECT CAD_LAN_PRODUCAO.DATA, CAD_INPRODUTO.APELIDO AS PRODUTO, CAD_FUNCIONARIO.NOME, CAD_SETOR.NOME AS SETOR,
CAD_OPERACAO_SETOR.OPERACAO, SYS_STATUS.PARAMETRO AS UN, SUM(CAD_LAN_PRODUCAO.QTDE) AS QTDE,
(select (convert(varchar,CAD_LAN_PRODUCAO.HORA_INICIAL,108))) as INICIO,
(select (convert(varchar,CAD_LAN_PRODUCAO.HORA_FINAL,108))) as FIN,
(select (convert(varchar,(select (CAD_LAN_PRODUCAO.HORA_FINAL - (select (CAD_LAN_PRODUCAO.HORA_INICIAL)))),108))) as TEMPO
FROM CAD_LAN_PRODUCAO INNER JOIN
CAD_FUNCIONARIO ON CAD_LAN_PRODUCAO.ID_FUNCIONARIO = CAD_FUNCIONARIO.ID INNER JOIN
CAD_OPERACAO_SETOR ON CAD_LAN_PRODUCAO.ID_OPERACAO_SETOR = CAD_OPERACAO_SETOR.ID INNER JOIN
SYS_STATUS ON CAD_LAN_PRODUCAO.ID_UNIDADE_PRODUTO = SYS_STATUS.ID_STATUS INNER JOIN
CAD_SETOR ON CAD_LAN_PRODUCAO.ID_SETOR_ORIGEM = CAD_SETOR.ID_SETOR INNER JOIN
CAD_INPRODUTO ON CAD_LAN_PRODUCAO.ID_PRODUTO = CAD_INPRODUTO.ID_INPRODUTO
GROUP BY CAD_FUNCIONARIO.NOME, CAD_OPERACAO_SETOR.OPERACAO, CAD_SETOR.NOME, SYS_STATUS.PARAMETRO, CAD_LAN_PRODUCAO.DATA,
CAD_FUNCIONARIO.NR_CARTAO, CAD_INPRODUTO.APELIDO, CAD_LAN_PRODUCAO.HORA_INICIAL, CAD_LAN_PRODUCAO.HORA_FINAL
HAVING (CAD_LAN_PRODUCAO.DATA BETWEEN CONVERT(DATETIME, '2014-03-01 00:00:00', 102) AND CONVERT(DATETIME, '2014-03-20 00:00:00', 102)) AND
(CAD_FUNCIONARIO.NR_CARTAO = N'50212')
-------------------------
AGORA PRECISO DIVIDIR TEMPO PELA QTDE

Compartilhar este post


Link para o post
Compartilhar em outros sites
SELECT CAD_LAN_PRODUCAO.DATA, CAD_INPRODUTO.APELIDO AS PRODUTO, CAD_FUNCIONARIO.NOME, CAD_SETOR.NOME AS SETOR,

CAD_OPERACAO_SETOR.OPERACAO, SYS_STATUS.PARAMETRO AS UN, SUM(CAD_LAN_PRODUCAO.QTDE) AS QTDE,

(select (convert(varchar,CAD_LAN_PRODUCAO.HORA_INICIAL,108))) as INICIO,

(select (convert(varchar,CAD_LAN_PRODUCAO.HORA_FINAL,108))) as FIN,

(select (convert(varchar,(CONVERT(DATETIME,((convert(NUMERIC(18,6),CAD_LAN_PRODUCAO.HORA_FINAL-CAD_LAN_PRODUCAO.HORA_INICIAL,108))/CAD_LAN_PRODUCAO.QTDE), 102)),108))) AS TEMPO_MIN_PÇ

FROM CAD_LAN_PRODUCAO INNER JOIN

CAD_FUNCIONARIO ON CAD_LAN_PRODUCAO.ID_FUNCIONARIO = CAD_FUNCIONARIO.ID INNER JOIN

CAD_OPERACAO_SETOR ON CAD_LAN_PRODUCAO.ID_OPERACAO_SETOR = CAD_OPERACAO_SETOR.ID INNER JOIN

SYS_STATUS ON CAD_LAN_PRODUCAO.ID_UNIDADE_PRODUTO = SYS_STATUS.ID_STATUS INNER JOIN

CAD_SETOR ON CAD_LAN_PRODUCAO.ID_SETOR_ORIGEM = CAD_SETOR.ID_SETOR INNER JOIN

CAD_INPRODUTO ON CAD_LAN_PRODUCAO.ID_PRODUTO = CAD_INPRODUTO.ID_INPRODUTO

GROUP BY CAD_FUNCIONARIO.NOME, CAD_OPERACAO_SETOR.OPERACAO, CAD_SETOR.NOME, SYS_STATUS.PARAMETRO, CAD_LAN_PRODUCAO.DATA,

CAD_FUNCIONARIO.NR_CARTAO, CAD_INPRODUTO.APELIDO, CAD_LAN_PRODUCAO.HORA_INICIAL, CAD_LAN_PRODUCAO.HORA_FINAL,CAD_LAN_PRODUCAO.QTDE

HAVING (CAD_LAN_PRODUCAO.DATA BETWEEN CONVERT(DATETIME, '2014-03-01 00:00:00', 102) AND CONVERT(DATETIME, '2014-03-20 00:00:00', 102)) AND

(CAD_FUNCIONARIO.NR_CARTAO = N'50212')

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.