Tenho uma query que utilizo em um painel de indicadores do sistema do hospital em que trabalho onde os usuários responsáveis solicitaram um alteração onde se inclua uma média nos tempos conforme o andamento do atendimento dos pacientes. A query utilizada atualmente é esta abaixo:
SELECT
TA.DS_SENHA SENHA_PACIENTE ,
CASE WHEN A.CD_ATENDIMENTO IS NULL THEN TA.NM_PACIENTE ELSE P.NM_PACIENTE END NOME_PACIENTE ,
TO_DATE(TA.DH_PRE_ATENDIMENTO , 'DD/MM/RRRR') DATA_RETIRADA_SENHA ,
TO_CHAR(TA.DH_PRE_ATENDIMENTO , 'HH24:MI:SS') HORA_SENHA ,
TO_DATE(TA.DH_CHAMADA_CLASSIFICACAO , 'DD/MM/RRRR') CHAMADA_TRIAGEM ,
TO_CHAR(TA.DH_CHAMADA_CLASSIFICACAO , 'HH24:MI:SS') HORA_TRIAGEM ,
TA.CD_TRIAGEM_ATENDIMENTO NUM_TRIAGEM ,
CASE WHEN TA.DH_REMOVIDO IS NULL THEN 'N' ELSE 'S' END TRIAGEM_REMOVIDA ,
TO_DATE(TA.DH_PRE_ATENDIMENTO_FIM , 'DD/MM/RRRR') FIM_TRIAGEM ,
TO_CHAR(TA.DH_PRE_ATENDIMENTO_FIM , 'HH24:MI:SS') HORA_FIM_TRIAGEM ,
TO_DATE(A.HR_ATENDIMENTO , 'DD/MM/RRRR') DATA_ATENDIMENTO ,
TO_CHAR(A.HR_ATENDIMENTO , 'HH24:MI:SS') HORA_ATENDIMENTO ,
A.CD_ATENDIMENTO NUM_ATENDIMENTO ,
TO_DATE(MIN(PW.DH_CRIACAO) , 'DD/MM/RRRR') CHAMADA_MEDICO ,
TO_CHAR(MIN(PW.DH_CRIACAO) , 'HH24:MI:SS') HORA_CHAMADA ,
TO_DATE(A.DT_ALTA , 'DD/MM/RRRR') DATA_ALTA ,
TO_CHAR(A.DT_ALTA , 'HH24:MI:SS') HORA_ALTA ,
SR.NM_COR ,
SUBSTR ( TO_TIMESTAMP(TO_CHAR(TA.DH_CHAMADA_CLASSIFICACAO,'dd/mm/yyyy hh24:mi:ss')) -
TO_TIMESTAMP(TO_CHAR(TA.DH_PRE_ATENDIMENTO,'dd/mm/yyyy hh24:mi:ss' )) , 11,9 ) TEMPO_SENHA_TRIAGEM ,
SUBSTR ( TO_TIMESTAMP(TO_CHAR(TA.DH_PRE_ATENDIMENTO_FIM,'dd/mm/yyyy hh24:mi:ss' )) -
TO_TIMESTAMP(TO_CHAR(TA.DH_CHAMADA_CLASSIFICACAO,'dd/mm/yyyy hh24:mi:ss')) , 11,9 ) TEMPO_FIM_TRIAGEM ,
SUBSTR ( TO_TIMESTAMP(TO_CHAR(A.HR_ATENDIMENTO,'dd/mm/yyyy hh24:mi:ss' )) -
TO_TIMESTAMP(TO_CHAR(TA.DH_PRE_ATENDIMENTO_FIM,'dd/mm/yyyy hh24:mi:ss' )) , 11,9 ) TEMPO_TRIAGEM_ATENDIMENTO,
SUBSTR ( TO_TIMESTAMP(TO_CHAR(MIN(PW.DH_CRIACAO),'dd/mm/yyyy hh24:mi:ss' )) -
TO_TIMESTAMP(TO_CHAR(A.HR_ATENDIMENTO,'dd/mm/yyyy hh24:mi:ss' )) , 11,9 ) TEMPO_CHAMADA_MEDICO ,
SUBSTR ( TO_TIMESTAMP(TO_CHAR(A.DT_ALTA,'dd/mm/yyyy hh24:mi:ss' )) -
TO_TIMESTAMP(TO_CHAR(MIN(PW.DH_CRIACAO),'dd/mm/yyyy hh24:mi:ss' )) , 11,9 ) TEMPO_FIM_CHAMADA ,
SUBSTR ( TO_TIMESTAMP(TO_CHAR(MIN(PW.DH_CRIACAO),'dd/mm/yyyy hh24:mi:ss' )) -
TO_TIMESTAMP(TO_CHAR(TA.DH_CHAMADA_CLASSIFICACAO,'dd/mm/yyyy hh24:mi:ss')) , 11,9 ) TEMPO_TRIAGEM_CHAMADA ,
SUBSTR ( TO_TIMESTAMP(TO_CHAR(A.DT_ALTA,'dd/mm/yyyy hh24:mi:ss' )) -
TO_TIMESTAMP(TO_CHAR(TA.DH_PRE_ATENDIMENTO,'dd/mm/yyyy hh24:mi:ss' )) , 11,9 ) TEMPO_TOTAL_ATENDIMENTO
FROM DBAMV.TRIAGEM_ATENDIMENTO TA
LEFT JOIN DBAMV.ATENDIME A ON A.CD_ATENDIMENTO = TA.CD_ATENDIMENTO AND A.TP_ATENDIMENTO = 'U'
LEFT JOIN DBAMV.PACIENTE P ON A.CD_PACIENTE = P.CD_PACIENTE
LEFT JOIN PW_DOCUMENTO_CLINICO PW ON A.CD_ATENDIMENTO = PW.CD_ATENDIMENTO
LEFT JOIN SACR_COR_REFERENCIA SR ON TA.CD_COR_REFERENCIA = SR.CD_COR_REFERENCIA
WHERE
((TRUNC(A.DT_ATENDIMENTO) > = '04/04/2017' AND TRUNC (A.DT_ATENDIMENTO) < = '04/04/2017' OR
((TRUNC(TA.DH_PRE_ATENDIMENTO) > = '04/04/2017' AND TRUNC (TA.DH_PRE_ATENDIMENTO) < = '04/04/2017' )
AND TA.CD_FILA_SENHA = 1 )) AND
CASE WHEN TA.DH_REMOVIDO IS NULL THEN 'N' ELSE 'S' END IN 'N' )
GROUP BY
A.CD_ATENDIMENTO ,
A.HR_ATENDIMENTO ,
TA.DS_SENHA ,
A.DT_ALTA ,
CASE WHEN A.CD_ATENDIMENTO IS NULL THEN TA.NM_PACIENTE ELSE P.NM_PACIENTE END ,
TA.CD_TRIAGEM_ATENDIMENTO ,
TA.DH_PRE_ATENDIMENTO ,
TA.DH_PRE_ATENDIMENTO_FIM ,
TA.DH_CHAMADA_CLASSIFICACAO ,
CASE WHEN TA.DH_REMOVIDO IS NULL THEN 'N' ELSE 'S' END ,
SR.NM_COR
ORDER BY NOME_PACIENTE;
SUBSTR ( TO_TIMESTAMP(TO_CHAR(TA.DH_CHAMADA_CLASSIFICACAO,'dd/mm/yyyy hh24:mi:ss')) -
TO_TIMESTAMP(TO_CHAR(TA.DH_PRE_ATENDIMENTO,'dd/mm/yyyy hh24:mi:ss' )) , 11,9 ) TEMPO_SENHA_TRIAGEM ,
SUBSTR ( TO_TIMESTAMP(TO_CHAR(TA.DH_PRE_ATENDIMENTO_FIM,'dd/mm/yyyy hh24:mi:ss' )) -
TO_TIMESTAMP(TO_CHAR(TA.DH_CHAMADA_CLASSIFICACAO,'dd/mm/yyyy hh24:mi:ss')) , 11,9 ) TEMPO_FIM_TRIAGEM ,
SUBSTR ( TO_TIMESTAMP(TO_CHAR(A.HR_ATENDIMENTO,'dd/mm/yyyy hh24:mi:ss' )) -
TO_TIMESTAMP(TO_CHAR(TA.DH_PRE_ATENDIMENTO_FIM,'dd/mm/yyyy hh24:mi:ss' )) , 11,9 ) TEMPO_TRIAGEM_ATENDIMENTO,
SUBSTR ( TO_TIMESTAMP(TO_CHAR(MIN(PW.DH_CRIACAO),'dd/mm/yyyy hh24:mi:ss' )) -
TO_TIMESTAMP(TO_CHAR(A.HR_ATENDIMENTO,'dd/mm/yyyy hh24:mi:ss' )) , 11,9 ) TEMPO_CHAMADA_MEDICO ,
SUBSTR ( TO_TIMESTAMP(TO_CHAR(A.DT_ALTA,'dd/mm/yyyy hh24:mi:ss' )) -
TO_TIMESTAMP(TO_CHAR(MIN(PW.DH_CRIACAO),'dd/mm/yyyy hh24:mi:ss' )) , 11,9 ) TEMPO_FIM_CHAMADA ,
SUBSTR ( TO_TIMESTAMP(TO_CHAR(MIN(PW.DH_CRIACAO),'dd/mm/yyyy hh24:mi:ss' )) -
TO_TIMESTAMP(TO_CHAR(TA.DH_CHAMADA_CLASSIFICACAO,'dd/mm/yyyy hh24:mi:ss')) , 11,9 ) TEMPO_TRIAGEM_CHAMADA ,
SUBSTR ( TO_TIMESTAMP(TO_CHAR(A.DT_ALTA,'dd/mm/yyyy hh24:mi:ss' )) -
TO_TIMESTAMP(TO_CHAR(TA.DH_PRE_ATENDIMENTO,'dd/mm/yyyy hh24:mi:ss' )) , 11,9 ) TEMPO_TOTAL_ATENDIMENTO
Vocês poderiam me ajudar?
Agradeço desde já!