# Fórmulas e queries para indicadores SEFAZ - N1/Produção e monitoramento / DEVOPS ## XGnPM ### IG1PM - Mensal - SQL NOVO $$ \frac{IncidentesTSIx – IncidentesTSIxEncerradosAtraso}{IncidentesTSIx} $$ - Tipo = Incidente - Status = Fechada - Grupo Solucionador = PRODUÇÃO e NOC - Grupo de prioridades = TSI1, TSI2, TSI3, TSI4 - Encerrados com atraso = campo `VIOLACAO_SLA_NOVO = 1` - Campos utilizados dentro da base `MDB_SOLUTIS`: - `CHAMADO` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - `COD_SOLUCAO = Baseado na Prioridade` - `GRUPO_SOLUCIONADOR = PRODUÇÃO, NOC` - `TIPO_CHAMADO = I` ### IG1PM - Mensal - SQL NOVO ```sql -- IG1PM -- CTE_INCIDENTE_SLA_CICLO WITH CTE_INCIDENTE_SLA_CICLO AS ( SELECT cr.ref_num AS [CHAMADO], SUM(CAST(zciclo_cr.z_dur_Time_spent_group AS INT)) AS [TOTAL_SOLUTION_TIME], cr.sla_violation AS [SLA_VIOLADO_CA], CASE WHEN pri.sym = 'P1' THEN 'TSI1' WHEN pri.sym = 'P2' THEN 'TSI2' WHEN pri.sym = 'P3' THEN 'TSI3' WHEN pri.sym = 'P4' THEN 'TSI4' WHEN pri.sym = 'P5' THEN 'TSI5' WHEN pri.sym = 'P6' THEN 'TSI6' WHEN pri.sym = 'P7' THEN 'TSI7' ELSE pri.sym END as [COD_SOLUCAO] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN pri ON cr.priority = pri.enum WHERE cr.type = 'I' AND pri.sym IN ('P1', 'P2', 'P3', 'P4') AND (cr.status = 'CL' AND cr.status != 'CNCL') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY cr.ref_num, pri.sym, cr.sla_violation ), -- CTE_CHAMADO_SLA_CR CTE_CHAMADO_SLA_CR AS ( SELECT DISTINCT cr.ref_num AS [CHAMADO], CASE WHEN (incidentes.[TOTAL_SOLUTION_TIME] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_INCIDENTE_SLA_CICLO incidentes ON cr.ref_num = incidentes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'I' AND incidentes.[COD_SOLUCAO] IN ('TSI1', 'TSI2', 'TSI3', 'TSI4') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, incidentes.[TOTAL_SOLUTION_TIME], incidentes.[COD_SOLUCAO] ), -- IG1PM - Mensal CTE_Chamados AS ( SELECT cr.ref_num AS [CHAMADO], CASE WHEN pri.sym = 'P1' THEN 'TSI1' WHEN pri.sym = 'P2' THEN 'TSI2' WHEN pri.sym = 'P3' THEN 'TSI3' WHEN pri.sym = 'P4' THEN 'TSI4' WHEN pri.sym = 'P5' THEN 'TSI5' WHEN pri.sym = 'P6' THEN 'TSI6' WHEN pri.sym = 'P7' THEN 'TSI7' ELSE pri.sym END as [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN pri ON cr.priority = pri.enum LEFT JOIN CTE_CHAMADO_SLA_CR CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'I' AND cr.status = 'CL' ) AND pri.sym IN ('P1', 'P2', 'P3', 'P4') AND (grp.contact_type = 2308) AND grp.last_name IN ('PRODUÇÃO', 'NOC') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), All_Solutions AS ( SELECT COD_SOLUCAO FROM (VALUES ('TSI1'), ('TSI2'), ('TSI3'), ('TSI4')) AS T(COD_SOLUCAO) ) -- Consulta final usando a nova coluna de SLA SELECT A.COD_SOLUCAO AS [COD_SOLUCAO], COUNT(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1 END) AS ATENDIDOS, -- Utilizando a nova coluna COUNT(C.COD_SOLUCAO) AS [TOTAL], ISNULL(AVG(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1.0 ELSE 0 END), 0) AS IG1PM -- Utilizando a nova coluna FROM All_Solutions AS A LEFT JOIN CTE_Chamados AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO GROUP BY A.COD_SOLUCAO ORDER BY A.COD_SOLUCAO; ``` ### IG2PM - Mensal - SQL NOVO $$ \frac{IncidentesTSIx – IncidentesTSIxEncerradosAtraso}{IncidentesTSIx} $$ - Tipo = Incidente - Status = Fechada - Grupo Solucionador = PRODUÇÃO e NOC - Grupo de prioridades = TSI5, TSI6, TSI7 - Encerrados com atraso = `VIOLACAO_SLA_NOVO = 1` - Campos utilizados dentro da base `MDB_SOLUTIS`: - `CHAMADO` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - `COD_SOLUCAO = Baseado na Prioridade` - `GRUPO_SOLUCIONADOR = PRODUÇÃO, NOC` - `TIPO_CHAMADO = I` ### IG2PM - Mensal - SQL NOVO ```sql -- IG2PM - Mensal -- CTE_INCIDENTE_SLA_CICLO WITH CTE_INCIDENTE_SLA_CICLO AS ( SELECT cr.ref_num AS [CHAMADO], SUM(CAST(zciclo_cr.z_dur_Time_spent_group AS INT)) AS [TOTAL_SOLUTION_TIME], cr.sla_violation AS [SLA_VIOLADO_CA], CASE WHEN pri.sym = 'P1' THEN 'TSI1' WHEN pri.sym = 'P2' THEN 'TSI2' WHEN pri.sym = 'P3' THEN 'TSI3' WHEN pri.sym = 'P4' THEN 'TSI4' WHEN pri.sym = 'P5' THEN 'TSI5' WHEN pri.sym = 'P6' THEN 'TSI6' WHEN pri.sym = 'P7' THEN 'TSI7' ELSE pri.sym END as [COD_SOLUCAO] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN pri ON cr.priority = pri.enum WHERE cr.type = 'I' AND pri.sym IN ('P5', 'P6', 'P7') AND (cr.status = 'CL' AND cr.status != 'CNCL') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY cr.ref_num, pri.sym, cr.sla_violation ), -- CTE_CHAMADO_SLA_CR CTE_CHAMADO_SLA_CR AS ( SELECT DISTINCT cr.ref_num AS [CHAMADO], CASE WHEN (incidentes.[TOTAL_SOLUTION_TIME] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_INCIDENTE_SLA_CICLO incidentes ON cr.ref_num = incidentes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'I' AND incidentes.[COD_SOLUCAO] IN ('TSI5', 'TSI6', 'TSI7') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, incidentes.[TOTAL_SOLUTION_TIME], incidentes.[COD_SOLUCAO] ), -- IG2PM - Mensal CTE_Chamados AS ( SELECT cr.ref_num AS [CHAMADO], CASE WHEN pri.sym = 'P1' THEN 'TSI1' WHEN pri.sym = 'P2' THEN 'TSI2' WHEN pri.sym = 'P3' THEN 'TSI3' WHEN pri.sym = 'P4' THEN 'TSI4' WHEN pri.sym = 'P5' THEN 'TSI5' WHEN pri.sym = 'P6' THEN 'TSI6' WHEN pri.sym = 'P7' THEN 'TSI7' ELSE pri.sym END as [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN pri ON cr.priority = pri.enum LEFT JOIN CTE_CHAMADO_SLA_CR CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'I' AND cr.status = 'CL' ) AND pri.sym IN ('P5', 'P6', 'P7') AND (grp.contact_type = 2308) AND grp.last_name IN ('PRODUÇÃO', 'NOC') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), All_Solutions AS ( SELECT COD_SOLUCAO FROM (VALUES ('TSI5'), ('TSI6'), ('TSI7')) AS T(COD_SOLUCAO) ) -- Consulta final usando a nova coluna de SLA SELECT A.COD_SOLUCAO AS [COD_SOLUCAO], COUNT(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1 END) AS ATENDIDOS, -- Utilizando a nova coluna COUNT(C.COD_SOLUCAO) AS [TOTAL], ISNULL(AVG(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1.0 ELSE 0 END), 0) AS IG2PM -- Utilizando a nova coluna FROM All_Solutions AS A LEFT JOIN CTE_Chamados AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO GROUP BY A.COD_SOLUCAO ORDER BY A.COD_SOLUCAO; ``` ### SG1PM - Mensal - SQL NOVO $$ \frac{SolicitaçõesTSSx – SolicitaçõesTSSxEncerradosAtraso}{SolicitaçõesTSSx} $$ - Tipo = Solicitação - Status = Fechada - Grupo Solucionador = PRODUÇÃO e NOC - Grupo de prioridades = TSS1, TSS2, TSS3, TSS4 - Encerrados com atraso = `SLA_VIOLADO = 1` - Campos utilizados dentro da base `CTE_Chamados`: - `CHAMADO` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - Campos utilizados dentro da base `CTE_Chamados_CR_WF`: - `CHAMADO` - `TAREFA_ID` - `SEQUENCE = Sequência da tarefa no chamado` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - Campos utilizados dentro da base `CTE_Chamados_RDM_WF`: - `CHAMADO` - `TAREFA_ID` - `TAREFA_SEQUENCE = Sequência da tarefa no chamado` - `TAREFA_NOME = Desrição da tarefa no chamado` - `TAREFA_GRUPO = GRUPO da tarefa no chamado` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` ### SG1PM - Mensal - SQL NOVO ```*sql -- ### SG1PM WITH -- ciclo de vida dos CHAMADO CTE_SOLICITACAO_SLA_CICLO AS ( SELECT cr.ref_num AS [CHAMADO], SUM(CAST(zciclo_cr.z_dur_Time_spent_group AS INT)) AS [TOTAL_SOLUTION_TIME], cr.sla_violation AS [SLA_VIOLADO_CA], z_TPS.code AS [COD_SOLUCAO] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id WHERE cr.type = 'R' AND z_TPS.code IN ('TSS1', 'TSS2', 'TSS3', 'TSS4') AND (cr.status = 'CL' AND cr.status != 'CNCL') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY cr.ref_num, cr.sla_violation, z_TPS.code ), --ciclo de vida das TAREFAS CHAMADOS CTE_TAREFAS_SLA_CICLO AS ( SELECT cr.ref_num as [CHAMADO], crwf.description as [TAREFA_NOME], cnt.last_name as [TAREFA_GRUPO], crwf.id as [TAREFA_ID], crwf.sequence as [SEQUENCE], SUM(z_ciclo_task.tempo_sla) as [TOTAL_TAREFA_TEMPO_UTIL], z_TPS.code AS [COD_SOLUCAO] -- Informado por antonio para usar a COD_SOLUCAO categoria na tela de tarefa FROM crwf JOIN z_ciclo_task ON z_ciclo_task.crwf_id = crwf.id JOIN ca_contact cnt on crwf.group_id = cnt.contact_uuid JOIN call_req cr ON crwf.object_id = cr.persid JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id WHERE ( cnt.contact_type=2308 AND cnt.last_name IN ('PRODUÇÃO', 'NOC') ) AND crwf.status='COMP' AND z_TPS.code IN ('TSS1', 'TSS2', 'TSS3', 'TSS4') AND DATEADD(ss, z_ciclo_task.dt_fim - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY crwf.object_id ,crwf.id, crwf.sequence, crwf.task , crwf.description ,cnt.last_name, cr.ref_num, z_TPS.code ), CTE_CHAMADO_SLA_CR AS ( SELECT DISTINCT cr.ref_num AS [CHAMADO], CASE WHEN (solicitacoes.[TOTAL_SOLUTION_TIME] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_SOLICITACAO_SLA_CICLO solicitacoes ON cr.ref_num = solicitacoes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'R' AND solicitacoes.[COD_SOLUCAO] IN ('TSS1', 'TSS2', 'TSS3', 'TSS4') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, solicitacoes.[TOTAL_SOLUTION_TIME], solicitacoes.[COD_SOLUCAO] ), CTE_CHAMADO_SLA_CR_WF AS ( SELECT cr.ref_num AS [CHAMADO], solicitacoes.[TAREFA_ID], solicitacoes.[SEQUENCE], CASE WHEN (solicitacoes.[TOTAL_TAREFA_TEMPO_UTIL] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_TAREFAS_SLA_CICLO solicitacoes ON cr.ref_num = solicitacoes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'R' AND solicitacoes.[COD_SOLUCAO] IN ('TSS1', 'TSS2', 'TSS3', 'TSS4') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, solicitacoes.[TOTAL_TAREFA_TEMPO_UTIL], solicitacoes.[TAREFA_ID], solicitacoes.[SEQUENCE], solicitacoes.[COD_SOLUCAO] ), -- SG1N3 - Mensal CTE_Chamados AS ( SELECT cr.ref_num AS [CHAMADO], z_TPS.code AS [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN prob_ctg pcat ON cr.category = pcat.persid JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id LEFT JOIN CTE_CHAMADO_SLA_CR CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'R' AND cr.status = 'CL' ) AND z_TPS.code IN ('TSS1', 'TSS2', 'TSS3', 'TSS4') AND (grp.contact_type = 2308 ) AND grp.last_name IN ('PRODUÇÃO', 'NOC') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), --OBTEM TODAS AS TAREFAS DO CHAMADO QUE VALEM COMO CHAMADO CTE_Chamados_CR_WF AS ( SELECT cr.ref_num AS [CHAMADO], CS.TAREFA_ID as [TAREFA_ID], CS.[SEQUENCE], z_TPS.code AS [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR_WF FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN prob_ctg pcat ON cr.category = pcat.persid JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id JOIN CTE_CHAMADO_SLA_CR_WF CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'R' AND cr.status = 'CL' ) AND z_TPS.code IN ('TSS1', 'TSS2', 'TSS3', 'TSS4') AND (grp.contact_type = 2308 ) AND grp.last_name IN ('PRODUÇÃO', 'NOC') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), -- RDM x TAREFAS CTE_Chamados_RDM_WF AS ( SELECT chg.chg_ref_num as [CHAMADO], wf.id as [TAREFA_ID], wf.sequence as [TAREFA_SEQUENCE], wf.description as [TAREFA_NOME], cnt.last_name as [TAREFA_GRUPO], SUM(z_ciclo_task.tempo_sla) as [TOTAL_TAREFA_TEMPO_UTIL], SUBSTRING(sdsc.sym, CHARINDEX('TSS', sdsc.sym), 4) AS [COD_SOLUCAO], CASE SUBSTRING(sdsc.sym, CHARINDEX('TSS', sdsc.sym), 4) WHEN 'TSS1' THEN 1800 -- 30Min WHEN 'TSS2' THEN 3600 -- 1H WHEN 'TSS3' THEN 7200 -- 2H WHEN 'TSS4' THEN 14400 -- 4H -- Leva em consideração valores do documento INDICADORES ELSE 0 END AS [SLA_EM_SEGUNDOS], CASE WHEN SUM(z_ciclo_task.tempo_sla) > CASE SUBSTRING(sdsc.sym, CHARINDEX('TSS', sdsc.sym), 4) WHEN 'TSS1' THEN 1800 WHEN 'TSS2' THEN 3600 WHEN 'TSS3' THEN 7200 WHEN 'TSS4' THEN 14400 ELSE 0 END THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM wf JOIN z_ciclo_task ON z_ciclo_task.wf_id = wf.id JOIN ca_contact cnt on wf.group_id = cnt.contact_uuid JOIN chg ON wf.object_id = chg.id JOIN srv_desc sdsc ON wf.support_lev = sdsc.persid LEFT JOIN ATTACHED_SLA sla ON wf.id = sla.ticket_id AND sla.ticket_type = 'wf' --JOIN chgcat pcat ON pcat.code = chg.category NÃO USAMOS COD_SOLUCAO categoria, porque NAO EXISTE COD ATRELADO WHERE ( cnt.contact_type = 2308 AND cnt.last_name IN ('PRODUÇÃO', 'NOC') ) AND (wf.status='COMP' AND wf.object_type='chg') AND (sdsc.sym like '%TSS1' OR sdsc.sym like '%TSS2'OR sdsc.sym like '%TSS3' OR sdsc.sym like '%TSS4') AND DATEADD(ss, z_ciclo_task.dt_fim - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY wf.object_id ,wf.id ,wf.task ,wf.description ,cnt.last_name, chg.chg_ref_num, sdsc.sym, wf.id, wf.sequence ), All_Solutions AS ( SELECT COD_SOLUCAO FROM (VALUES ('TSS1'), ('TSS2'), ('TSS3'), ('TSS4')) AS T(COD_SOLUCAO) ), -- Combina os chamados de SOLICITAÇÕES E TAREFAS_SOLICITACOES CTE_CHAMADOS_COMBINADOS AS ( SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados UNION ALL SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados_CR_WF --Tarefas dos chamados UNION ALL SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados_RDM_WF --Tarefas das RDMs ) -- Consulta final usando a nova coluna de SLA SELECT A.COD_SOLUCAO AS priority, COUNT(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1 END) AS fulfilled, -- Utilizando a nova coluna COUNT(C.COD_SOLUCAO) AS total, ISNULL(AVG(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1.0 ELSE 0 END), 0) AS result -- Utilizando a nova coluna FROM All_Solutions AS A LEFT JOIN CTE_CHAMADOS_COMBINADOS AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO GROUP BY A.COD_SOLUCAO ORDER BY A.COD_SOLUCAO; ``` ### SG2PM - Mensal - SQL NOVO $$ \frac{SolicitaçõesTSSx – SolicitaçõesTSSxEncerradosAtraso}{SolicitaçõesTSSx} $$ - Tipo = Solicitação - Status = Fechada - Grupo Solucionador = PRODUÇÃO e NOC - Grupo de prioridades = TSS5, TSS6, TSS7, TSS8, TSS9, TSS10 - Encerrados com atraso = campo `SLA_VIOLADO = 1` - Campos utilizados dentro da CTE `CTE_Chamados`: - `CHAMADO` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - Campos utilizados dentro da CTE `CTE_Chamados_CR_WF`: - `CHAMADO` - `TAREFA_ID` - `SEQUENCE = Sequência da tarefa no chamado` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - Campos utilizados dentro da CTE `CTE_Chamados_RDM_WF`: - `CHAMADO` - `TAREFA_ID` - `TAREFA_SEQUENCE = Sequência da tarefa no chamado` - `TAREFA_NOME = Desrição da tarefa no chamado` - `TAREFA_GRUPO = GRUPO da tarefa no chamado` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` ### SG2PM - Mensal - SQL NOVO ```*sql -- ### SG2PM WITH -- ciclo de vida dos CHAMADO CTE_SOLICITACAO_SLA_CICLO AS ( SELECT cr.ref_num AS [CHAMADO], SUM(CAST(zciclo_cr.z_dur_Time_spent_group AS INT)) AS [TOTAL_SOLUTION_TIME], cr.sla_violation AS [SLA_VIOLADO_CA], z_TPS.code AS [COD_SOLUCAO] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id WHERE cr.type = 'R' AND z_TPS.code IN ('TSS5', 'TSS6', 'TSS7', 'TSS8', 'TSS9') AND (cr.status = 'CL' AND cr.status != 'CNCL') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY cr.ref_num, cr.sla_violation, z_TPS.code ), --ciclo de vida das TAREFAS CHAMADOS CTE_TAREFAS_SLA_CICLO AS ( SELECT cr.ref_num as [CHAMADO], crwf.description as [TAREFA_NOME], cnt.last_name as [TAREFA_GRUPO], crwf.id as [TAREFA_ID], crwf.sequence as [SEQUENCE], SUM(z_ciclo_task.tempo_sla) as [TOTAL_TAREFA_TEMPO_UTIL], z_TPS.code AS [COD_SOLUCAO] -- Informado por antonio para usar a COD_SOLUCAO categoria na tela de tarefa FROM crwf JOIN z_ciclo_task ON z_ciclo_task.crwf_id = crwf.id JOIN ca_contact cnt on crwf.group_id = cnt.contact_uuid JOIN call_req cr ON crwf.object_id = cr.persid JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id WHERE ( cnt.contact_type=2308 AND cnt.last_name IN ('PRODUÇÃO', 'NOC') ) AND crwf.status='COMP' AND z_TPS.code IN ('TSS5', 'TSS6', 'TSS7', 'TSS8', 'TSS9') AND DATEADD(ss, z_ciclo_task.dt_fim - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY crwf.object_id ,crwf.id, crwf.sequence, crwf.task , crwf.description ,cnt.last_name, cr.ref_num, z_TPS.code ), CTE_CHAMADO_SLA_CR AS ( SELECT DISTINCT cr.ref_num AS [CHAMADO], CASE WHEN (solicitacoes.[TOTAL_SOLUTION_TIME] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_SOLICITACAO_SLA_CICLO solicitacoes ON cr.ref_num = solicitacoes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'R' AND solicitacoes.[COD_SOLUCAO] IN ('TSS5', 'TSS6', 'TSS7', 'TSS8', 'TSS9') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, solicitacoes.[TOTAL_SOLUTION_TIME], solicitacoes.[COD_SOLUCAO] ), CTE_CHAMADO_SLA_CR_WF AS ( SELECT cr.ref_num AS [CHAMADO], solicitacoes.[TAREFA_ID], solicitacoes.[SEQUENCE], CASE WHEN (solicitacoes.[TOTAL_TAREFA_TEMPO_UTIL] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_TAREFAS_SLA_CICLO solicitacoes ON cr.ref_num = solicitacoes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'R' AND solicitacoes.[COD_SOLUCAO] IN ('TSS5', 'TSS6', 'TSS7', 'TSS8', 'TSS9') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, solicitacoes.[TOTAL_TAREFA_TEMPO_UTIL], solicitacoes.[TAREFA_ID], solicitacoes.[SEQUENCE], solicitacoes.[COD_SOLUCAO] ), -- SG1N3 - Mensal CTE_Chamados AS ( SELECT cr.ref_num AS [CHAMADO], z_TPS.code AS [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN prob_ctg pcat ON cr.category = pcat.persid JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id LEFT JOIN CTE_CHAMADO_SLA_CR CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'R' AND cr.status = 'CL' ) AND z_TPS.code IN ('TSS5', 'TSS6', 'TSS7', 'TSS8', 'TSS9') AND (grp.contact_type = 2308 ) AND grp.last_name IN ('PRODUÇÃO', 'NOC') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), --OBTEM TODAS AS TAREFAS DO CHAMADO QUE VALEM COMO CHAMADO CTE_Chamados_CR_WF AS ( SELECT cr.ref_num AS [CHAMADO], CS.TAREFA_ID as [TAREFA_ID], CS.[SEQUENCE], z_TPS.code AS [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR_WF FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN prob_ctg pcat ON cr.category = pcat.persid JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id JOIN CTE_CHAMADO_SLA_CR_WF CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'R' AND cr.status = 'CL' ) AND z_TPS.code IN ('TSS5', 'TSS6', 'TSS7', 'TSS8', 'TSS9') AND (grp.contact_type = 2308 ) AND grp.last_name IN ('PRODUÇÃO', 'NOC') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), -- RDM x TAREFAS CTE_Chamados_RDM_WF AS ( SELECT chg.chg_ref_num as [CHAMADO], wf.id as [TAREFA_ID], wf.sequence as [TAREFA_SEQUENCE], wf.description as [TAREFA_NOME], cnt.last_name as [TAREFA_GRUPO], SUM(z_ciclo_task.tempo_sla) as [TOTAL_TAREFA_TEMPO_UTIL], SUBSTRING(sdsc.sym, CHARINDEX('TSS', sdsc.sym), 4) AS [COD_SOLUCAO], CASE SUBSTRING(sdsc.sym, CHARINDEX('TSS', sdsc.sym), 4) WHEN 'TSS5' THEN 21600 -- 6H WHEN 'TSS6' THEN 28800 -- 8H WHEN 'TSS7' THEN 43200 -- 12H WHEN 'TSS8' THEN 57600 -- 16H WHEN 'TSS9' THEN 72000 -- 20H -- Leva em consideração valores do documento INDICADORES ELSE 0 END AS [SLA_EM_SEGUNDOS], CASE WHEN SUM(z_ciclo_task.tempo_sla) > CASE SUBSTRING(sdsc.sym, CHARINDEX('TSS', sdsc.sym), 4) WHEN 'TSS5' THEN 21600 -- 6H WHEN 'TSS6' THEN 28800 -- 8H WHEN 'TSS7' THEN 43200 -- 12H WHEN 'TSS8' THEN 57600 -- 16H WHEN 'TSS9' THEN 72000 -- 20H ELSE 0 END THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM wf JOIN z_ciclo_task ON z_ciclo_task.wf_id = wf.id JOIN ca_contact cnt on wf.group_id = cnt.contact_uuid JOIN chg ON wf.object_id = chg.id JOIN srv_desc sdsc ON wf.support_lev = sdsc.persid LEFT JOIN ATTACHED_SLA sla ON wf.id = sla.ticket_id AND sla.ticket_type = 'wf' WHERE ( cnt.contact_type = 2308 AND cnt.last_name IN ('PRODUÇÃO', 'NOC') ) AND (wf.status='COMP' AND wf.object_type='chg') AND (sdsc.sym like '%TSS5' OR sdsc.sym like '%TSS6'OR sdsc.sym like '%TSS7' OR sdsc.sym like '%TSS8' OR sdsc.sym like '%TSS9') AND DATEADD(ss, z_ciclo_task.dt_fim - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY wf.object_id ,wf.id ,wf.task ,wf.description ,cnt.last_name, chg.chg_ref_num, sdsc.sym, wf.id, wf.sequence ), All_Solutions AS ( SELECT COD_SOLUCAO FROM (VALUES ('TSS5'), ('TSS6'), ('TSS7'), ('TSS8'), ('TSS9')) AS T(COD_SOLUCAO) ), -- Combina os chamados de SOLICITAÇÕES E TAREFAS_SOLICITACOES CTE_CHAMADOS_COMBINADOS AS ( SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados UNION ALL SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados_CR_WF --Tarefas dos chamados UNION ALL SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados_RDM_WF --Tarefas das RDMs ) SELECT A.COD_SOLUCAO AS priority, COUNT(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1 END) AS fulfilled, -- Utilizando a nova coluna COUNT(C.COD_SOLUCAO) AS total, ISNULL(AVG(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1.0 ELSE 0 END), 0) AS result -- Utilizando a nova coluna FROM All_Solutions AS A LEFT JOIN CTE_CHAMADOS_COMBINADOS AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO GROUP BY A.COD_SOLUCAO ORDER BY A.COD_SOLUCAO; ``` ### RG1PM - Mensal - SQL NOVO $$ \frac{RotinasTSRx – RotinasTSRxEncerradosAtraso}{RotinasTSRx} $$ - Tipo = Rotina - Status = Fechada - Grupo Solucionador = PRODUÇÃO e NOC - Grupo de prioridades = TSR1, TSR2, TSR3 - Encerrados com atraso = `VIOLACAO_SLA_NOVO = 1` - Campos utilizados dentro da base `CTE_Chamados`: - `CHAMADO` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - Campos utilizados dentro da base `CTE_Chamados_CR_WF`: - `CHAMADO` - `TAREFA_ID` - `SEQUENCE = Sequência da tarefa no chamado` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` ### RG1PM - Mensal - SQL NOVO ```sql -- ### RG1PM -- DEMOROU 20 MINUTOS EXECUÇÃO WITH -- ciclo de vida dos CHAMADO CTE_SOLICITACAO_SLA_CICLO AS ( SELECT cr.ref_num AS [CHAMADO], SUM(CAST(zciclo_cr.z_dur_Time_spent_group AS INT)) AS [TOTAL_SOLUTION_TIME], cr.sla_violation AS [SLA_VIOLADO_CA], z_TPS.code AS [COD_SOLUCAO] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id WHERE cr.type = 'R' AND z_TPS.code IN ('TSR1', 'TSR2', 'TSR3') AND (cr.status = 'CL' AND cr.status != 'CNCL') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY cr.ref_num, cr.sla_violation, z_TPS.code ), --ciclo de vida das TAREFAS CHAMADOS CTE_TAREFAS_SLA_CICLO AS ( SELECT cr.ref_num as [CHAMADO], crwf.description as [TAREFA_NOME], cnt.last_name as [TAREFA_GRUPO], crwf.id as [TAREFA_ID], crwf.sequence as [SEQUENCE], SUM(z_ciclo_task.tempo_sla) as [TOTAL_TAREFA_TEMPO_UTIL], z_TPS.code AS [COD_SOLUCAO] -- Informado por antonio para usar a COD_SOLUCAO categoria na tela de tarefa FROM crwf JOIN z_ciclo_task ON z_ciclo_task.crwf_id = crwf.id JOIN ca_contact cnt on crwf.group_id = cnt.contact_uuid JOIN call_req cr ON crwf.object_id = cr.persid JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id WHERE ( cnt.contact_type=2308 AND cnt.last_name IN ('PRODUÇÃO', 'NOC') ) AND crwf.status='COMP' AND z_TPS.code IN ('TSR1', 'TSR2', 'TSR3') AND DATEADD(ss, z_ciclo_task.dt_fim - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY crwf.object_id ,crwf.id, crwf.sequence, crwf.task , crwf.description ,cnt.last_name, cr.ref_num, z_TPS.code ), CTE_CHAMADO_SLA_CR AS ( SELECT DISTINCT cr.ref_num AS [CHAMADO], CASE WHEN (solicitacoes.[TOTAL_SOLUTION_TIME] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_SOLICITACAO_SLA_CICLO solicitacoes ON cr.ref_num = solicitacoes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'R' AND solicitacoes.[COD_SOLUCAO] IN ('TSR1', 'TSR2', 'TSR3') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, solicitacoes.[TOTAL_SOLUTION_TIME], solicitacoes.[COD_SOLUCAO] ), CTE_CHAMADO_SLA_CR_WF AS ( SELECT cr.ref_num AS [CHAMADO], solicitacoes.[TAREFA_ID], solicitacoes.[SEQUENCE], CASE WHEN (solicitacoes.[TOTAL_TAREFA_TEMPO_UTIL] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_TAREFAS_SLA_CICLO solicitacoes ON cr.ref_num = solicitacoes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'R' AND solicitacoes.[COD_SOLUCAO] IN ('TSR1', 'TSR2', 'TSR3') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, solicitacoes.[TOTAL_TAREFA_TEMPO_UTIL], solicitacoes.[TAREFA_ID], solicitacoes.[SEQUENCE], solicitacoes.[COD_SOLUCAO] ), -- RG1PM - Mensal CTE_Chamados AS ( SELECT cr.ref_num AS [CHAMADO], z_TPS.code AS [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN prob_ctg pcat ON cr.category = pcat.persid JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id LEFT JOIN CTE_CHAMADO_SLA_CR CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'R' AND cr.status = 'CL' ) AND z_TPS.code IN ('TSR1', 'TSR2', 'TSR3') AND (grp.contact_type = 2308 ) AND grp.last_name IN ('PRODUÇÃO', 'NOC') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), --OBTEM TODAS AS TAREFAS DO CHAMADO QUE VALEM COMO CHAMADO CTE_Chamados_CR_WF AS ( SELECT cr.ref_num AS [CHAMADO], CS.TAREFA_ID as [TAREFA_ID], CS.[SEQUENCE], z_TPS.code AS [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR_WF FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN prob_ctg pcat ON cr.category = pcat.persid JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id JOIN CTE_CHAMADO_SLA_CR_WF CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'R' AND cr.status = 'CL' ) AND z_TPS.code IN ('TSR1', 'TSR2', 'TSR3') AND (grp.contact_type = 2308 ) AND grp.last_name IN ('PRODUÇÃO', 'NOC') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), All_Solutions AS ( SELECT COD_SOLUCAO FROM (VALUES ('TSR1'), ('TSR2'), ('TSR3')) AS T(COD_SOLUCAO) ), -- Combina os chamados de SOLICITAÇÕES E TAREFAS_SOLICITACOES CTE_CHAMADOS_COMBINADOS AS ( SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados -- CHAMADOS do tipo Rotina UNION ALL SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados_CR_WF --Tarefas dos chamados que conta como chamado ) -- Consulta final usando a nova coluna de SLA SELECT A.COD_SOLUCAO AS [COD_SOLUCAO], COUNT(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1 END) AS [ATENDIDOS], -- Utilizando a nova coluna COUNT(C.COD_SOLUCAO) AS total, ISNULL(AVG(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1.0 ELSE 0 END), 0) AS [RESULTADO] -- Utilizando a nova coluna FROM All_Solutions AS A LEFT JOIN CTE_CHAMADOS_COMBINADOS AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO GROUP BY A.COD_SOLUCAO ORDER BY A.COD_SOLUCAO; GO ``` ### RG2PM - Mensal - SQL NOVO $$ \frac{RotinasTSRx – RotinasTSRxEncerradosAtraso}{RotinasTSRx} $$ - Tipo = Rotina - Status = Fechada - Grupo Solucionador = PRODUÇÃO e NOC - Grupo de prioridades = TSR4, TSR5 - Encerrados com atraso = `VIOLACAO_SLA_NOVO = 1` - Campos utilizados dentro da base `CTE_Chamados`: - `CHAMADO` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - Campos utilizados dentro da base `CTE_Chamados_CR_WF`: - `CHAMADO` - `TAREFA_ID` - `SEQUENCE = Sequência da tarefa no chamado` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` ```sql -- ### RG2PM -- DEMOROU 20 MINUTOS EXECUÇÃO WITH -- ciclo de vida dos CHAMADO CTE_SOLICITACAO_SLA_CICLO AS ( SELECT cr.ref_num AS [CHAMADO], SUM(CAST(zciclo_cr.z_dur_Time_spent_group AS INT)) AS [TOTAL_SOLUTION_TIME], cr.sla_violation AS [SLA_VIOLADO_CA], z_TPS.code AS [COD_SOLUCAO] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id WHERE cr.type = 'R' AND z_TPS.code IN ('TSR4', 'TSR5') AND (cr.status = 'CL' AND cr.status != 'CNCL') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY cr.ref_num, cr.sla_violation, z_TPS.code ), --ciclo de vida das TAREFAS CHAMADOS CTE_TAREFAS_SLA_CICLO AS ( SELECT cr.ref_num as [CHAMADO], crwf.description as [TAREFA_NOME], cnt.last_name as [TAREFA_GRUPO], crwf.id as [TAREFA_ID], crwf.sequence as [SEQUENCE], SUM(z_ciclo_task.tempo_sla) as [TOTAL_TAREFA_TEMPO_UTIL], z_TPS.code AS [COD_SOLUCAO] -- Informado por antonio para usar a COD_SOLUCAO categoria na tela de tarefa FROM crwf JOIN z_ciclo_task ON z_ciclo_task.crwf_id = crwf.id JOIN ca_contact cnt on crwf.group_id = cnt.contact_uuid JOIN call_req cr ON crwf.object_id = cr.persid JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id WHERE ( cnt.contact_type=2308 AND cnt.last_name IN ('PRODUÇÃO', 'NOC') ) AND crwf.status='COMP' AND z_TPS.code IN ('TSR4', 'TSR5') AND DATEADD(ss, z_ciclo_task.dt_fim - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY crwf.object_id ,crwf.id, crwf.sequence, crwf.task , crwf.description ,cnt.last_name, cr.ref_num, z_TPS.code ), CTE_CHAMADO_SLA_CR AS ( SELECT DISTINCT cr.ref_num AS [CHAMADO], CASE WHEN (solicitacoes.[TOTAL_SOLUTION_TIME] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_SOLICITACAO_SLA_CICLO solicitacoes ON cr.ref_num = solicitacoes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'R' AND solicitacoes.[COD_SOLUCAO] IN ('TSR4', 'TSR5') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, solicitacoes.[TOTAL_SOLUTION_TIME], solicitacoes.[COD_SOLUCAO] ), CTE_CHAMADO_SLA_CR_WF AS ( SELECT cr.ref_num AS [CHAMADO], solicitacoes.[TAREFA_ID], solicitacoes.[SEQUENCE], CASE WHEN (solicitacoes.[TOTAL_TAREFA_TEMPO_UTIL] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_TAREFAS_SLA_CICLO solicitacoes ON cr.ref_num = solicitacoes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'R' AND solicitacoes.[COD_SOLUCAO] IN ('TSR4', 'TSR5') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, solicitacoes.[TOTAL_TAREFA_TEMPO_UTIL], solicitacoes.[TAREFA_ID], solicitacoes.[SEQUENCE], solicitacoes.[COD_SOLUCAO] ), -- RG2PM - Mensal CTE_Chamados AS ( SELECT cr.ref_num AS [CHAMADO], z_TPS.code AS [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN prob_ctg pcat ON cr.category = pcat.persid JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id LEFT JOIN CTE_CHAMADO_SLA_CR CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'R' AND cr.status = 'CL' ) AND z_TPS.code IN ('TSR4', 'TSR5') AND (grp.contact_type = 2308 ) AND grp.last_name IN ('PRODUÇÃO', 'NOC') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), --OBTEM TODAS AS TAREFAS DO CHAMADO QUE VALEM COMO CHAMADO CTE_Chamados_CR_WF AS ( SELECT cr.ref_num AS [CHAMADO], CS.TAREFA_ID as [TAREFA_ID], CS.[SEQUENCE], z_TPS.code AS [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR_WF FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN prob_ctg pcat ON cr.category = pcat.persid JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id JOIN CTE_CHAMADO_SLA_CR_WF CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'R' AND cr.status = 'CL' ) AND z_TPS.code IN ('TSR4', 'TSR5') AND (grp.contact_type = 2308 ) AND grp.last_name IN ('PRODUÇÃO', 'NOC') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), All_Solutions AS ( SELECT COD_SOLUCAO FROM (VALUES ('TSR4'), ('TSR5')) AS T(COD_SOLUCAO) ), -- Combina os chamados de SOLICITAÇÕES E TAREFAS_SOLICITACOES CTE_CHAMADOS_COMBINADOS AS ( SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados -- CHAMADOS do tipo Rotina UNION ALL SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados_CR_WF --Tarefas dos chamados que conta como chamado ) -- Consulta final usando a nova coluna de SLA SELECT A.COD_SOLUCAO AS priority, COUNT(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1 END) AS fulfilled, -- Utilizando a nova coluna COUNT(C.COD_SOLUCAO) AS total, ISNULL(AVG(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1.0 ELSE 0 END), 0) AS result -- Utilizando a nova coluna FROM All_Solutions AS A LEFT JOIN CTE_CHAMADOS_COMBINADOS AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO GROUP BY A.COD_SOLUCAO ORDER BY A.COD_SOLUCAO; GO ``` ## XGnDS ### IG1DS - Mensal NOVO $$ \frac{IncidentesTSIx – IncidentesTSIxEncerradosAtraso}{IncidentesTSIx} $$ - Tipo = Incidente - Status = Fechada - Grupo Solucionador = 'GEPIN AS Atendimento' - Grupo de prioridades = TSI1, TSI2, TSI3, TSI4 - Encerrados com atraso = `VIOLACAO_SLA_NOVO = 1` - Campos utilizados dentro da base `MDB_SOLUTIS`: - `CHAMADO` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - `COD_SOLUCAO = Baseado na Prioridade` - `GRUPO_SOLUCIONADOR = GEPIN AS Atendimento` - `TIPO_CHAMADO = I` > sql NOVO ``` sql -- IG1DS -- CTE_INCIDENTE_SLA_CICLO WITH CTE_INCIDENTE_SLA_CICLO AS ( SELECT cr.ref_num AS [CHAMADO], SUM(CAST(zciclo_cr.z_dur_Time_spent_group AS INT)) AS [TOTAL_SOLUTION_TIME], cr.sla_violation AS [SLA_VIOLADO_CA], CASE WHEN pri.sym = 'P1' THEN 'TSI1' WHEN pri.sym = 'P2' THEN 'TSI2' WHEN pri.sym = 'P3' THEN 'TSI3' WHEN pri.sym = 'P4' THEN 'TSI4' WHEN pri.sym = 'P5' THEN 'TSI5' WHEN pri.sym = 'P6' THEN 'TSI6' WHEN pri.sym = 'P7' THEN 'TSI7' ELSE pri.sym END as [COD_SOLUCAO] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN pri ON cr.priority = pri.enum WHERE cr.type = 'I' AND pri.sym IN ('P1', 'P2', 'P3', 'P4') AND (cr.status = 'CL' AND cr.status != 'CNCL') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2022-01-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY cr.ref_num, pri.sym, cr.sla_violation ), -- CTE_CHAMADO_SLA_CR CTE_CHAMADO_SLA_CR AS ( SELECT DISTINCT cr.ref_num AS [CHAMADO], CASE WHEN (incidentes.[TOTAL_SOLUTION_TIME] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_INCIDENTE_SLA_CICLO incidentes ON cr.ref_num = incidentes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2022-01-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'I' AND incidentes.[COD_SOLUCAO] IN ('TSI1', 'TSI2', 'TSI3', 'TSI4') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, incidentes.[TOTAL_SOLUTION_TIME], incidentes.[COD_SOLUCAO] ), -- IG1DS - Mensal CTE_Chamados AS ( SELECT cr.ref_num AS [CHAMADO], CASE WHEN pri.sym = 'P1' THEN 'TSI1' WHEN pri.sym = 'P2' THEN 'TSI2' WHEN pri.sym = 'P3' THEN 'TSI3' WHEN pri.sym = 'P4' THEN 'TSI4' WHEN pri.sym = 'P5' THEN 'TSI5' WHEN pri.sym = 'P6' THEN 'TSI6' WHEN pri.sym = 'P7' THEN 'TSI7' ELSE pri.sym END as [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN pri ON cr.priority = pri.enum LEFT JOIN CTE_CHAMADO_SLA_CR CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'I' AND cr.status = 'CL' ) AND pri.sym IN ('P1', 'P2', 'P3', 'P4') AND (grp.contact_type = 2308) AND grp.last_name IN ('GEPIN AS Atendimento') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2022-01-01 00:00:00' AND '2024-07-31 23:59:59' ), All_Solutions AS ( SELECT COD_SOLUCAO FROM (VALUES ('TSI1'), ('TSI2'), ('TSI3'), ('TSI4')) AS T(COD_SOLUCAO) ) -- Consulta final usando a nova coluna de SLA SELECT A.COD_SOLUCAO AS [COD_SOLUCAO], COUNT(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1 END) AS ATENDIDOS, -- Utilizando a nova coluna COUNT(C.COD_SOLUCAO) AS [TOTAL], ISNULL(AVG(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1.0 ELSE 0 END), 0) AS IG1DS -- Utilizando a nova coluna FROM All_Solutions AS A LEFT JOIN CTE_Chamados AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO GROUP BY A.COD_SOLUCAO ORDER BY A.COD_SOLUCAO; GO ``` ### IG2DS - Mensal NOVO $$ \frac{IncidentesTSIx – IncidentesTSIxEncerradosAtraso}{IncidentesTSIx} $$ - Tipo = Incidente - Status = Fechada - Grupo Solucionador = 'GEPIN AS Atendimento' - Grupo de prioridades = TSI5, TSI6, TSI7 - Encerrados com atraso = campo `VIOLACAO_SLA_NOVO = 1` - Campos utilizados dentro da base `MDB_SOLUTIS`: - `CHAMADO` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - `COD_SOLUCAO = Baseado na Prioridade` - `GRUPO_SOLUCIONADOR = GEPIN AS Atendimento` - `TIPO_CHAMADO = I` > sql NOVO ``` sql -- IG2DS - Mensal -- CTE_INCIDENTE_SLA_CICLO WITH CTE_INCIDENTE_SLA_CICLO AS ( SELECT cr.ref_num AS [CHAMADO], SUM(CAST(zciclo_cr.z_dur_Time_spent_group AS INT)) AS [TOTAL_SOLUTION_TIME], cr.sla_violation AS [SLA_VIOLADO_CA], CASE WHEN pri.sym = 'P1' THEN 'TSI1' WHEN pri.sym = 'P2' THEN 'TSI2' WHEN pri.sym = 'P3' THEN 'TSI3' WHEN pri.sym = 'P4' THEN 'TSI4' WHEN pri.sym = 'P5' THEN 'TSI5' WHEN pri.sym = 'P6' THEN 'TSI6' WHEN pri.sym = 'P7' THEN 'TSI7' ELSE pri.sym END as [COD_SOLUCAO] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN pri ON cr.priority = pri.enum WHERE cr.type = 'I' AND pri.sym IN ('P5', 'P6', 'P7') AND (cr.status = 'CL' AND cr.status != 'CNCL') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2022-01-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY cr.ref_num, pri.sym, cr.sla_violation ), -- CTE_CHAMADO_SLA_CR CTE_CHAMADO_SLA_CR AS ( SELECT DISTINCT cr.ref_num AS [CHAMADO], CASE WHEN (incidentes.[TOTAL_SOLUTION_TIME] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_INCIDENTE_SLA_CICLO incidentes ON cr.ref_num = incidentes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2022-01-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'I' AND incidentes.[COD_SOLUCAO] IN ('TSI5', 'TSI6', 'TSI7') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, incidentes.[TOTAL_SOLUTION_TIME], incidentes.[COD_SOLUCAO] ), -- IG2DS - Mensal CTE_Chamados AS ( SELECT cr.ref_num AS [CHAMADO], CASE WHEN pri.sym = 'P1' THEN 'TSI1' WHEN pri.sym = 'P2' THEN 'TSI2' WHEN pri.sym = 'P3' THEN 'TSI3' WHEN pri.sym = 'P4' THEN 'TSI4' WHEN pri.sym = 'P5' THEN 'TSI5' WHEN pri.sym = 'P6' THEN 'TSI6' WHEN pri.sym = 'P7' THEN 'TSI7' ELSE pri.sym END as [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN pri ON cr.priority = pri.enum LEFT JOIN CTE_CHAMADO_SLA_CR CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'I' AND cr.status = 'CL' ) AND pri.sym IN ('P5', 'P6', 'P7') AND (grp.contact_type = 2308) AND grp.last_name IN ('GEPIN AS Atendimento') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2022-01-01 00:00:00' AND '2024-07-31 23:59:59' ), All_Solutions AS ( SELECT COD_SOLUCAO FROM (VALUES ('TSI5'), ('TSI6'), ('TSI7')) AS T(COD_SOLUCAO) ) -- Consulta final usando a nova coluna de SLA SELECT A.COD_SOLUCAO AS [COD_SOLUCAO], COUNT(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1 END) AS ATENDIDOS, -- Utilizando a nova coluna COUNT(C.COD_SOLUCAO) AS [TOTAL], ISNULL(AVG(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1.0 ELSE 0 END), 0) AS IG2DS -- Utilizando a nova coluna FROM All_Solutions AS A LEFT JOIN CTE_Chamados AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO GROUP BY A.COD_SOLUCAO ORDER BY A.COD_SOLUCAO; GO ``` ### SG1DS - Mensal $$ \frac{SolicitaçõesTSSx – SolicitaçõesTSSxEncerradosAtraso}{SolicitaçõesTSSx} $$ - Tipo = Solicitação - Status = Fechada - Grupo Solucionador = 'GEPIN AS Atendimento' - Grupo de prioridades = TSS1, TSS2, TSS3, TSS4 - Encerrados com atraso = campo `VIOLACAO_SLA_NOVO = 1` - Campos utilizados dentro da CTE `CTE_Chamados`: - `CHAMADO` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - Campos utilizados dentro da CTE `CTE_Chamados_CR_WF`: - `CHAMADO` - `TAREFA_ID` - `SEQUENCE = Sequência da tarefa no chamado` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - Campos utilizados dentro da CTE `CTE_Chamados_RDM_WF`: - `CHAMADO` - `TAREFA_ID` - `TAREFA_SEQUENCE = Sequência da tarefa no chamado` - `TAREFA_NOME = Desrição da tarefa no chamado` - `TAREFA_GRUPO = GRUPO da tarefa no chamado` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` > sql ``` *sql -- ### SG1DS WITH -- ciclo de vida dos CHAMADO CTE_SOLICITACAO_SLA_CICLO AS ( SELECT cr.ref_num AS [CHAMADO], SUM(CAST(zciclo_cr.z_dur_Time_spent_group AS INT)) AS [TOTAL_SOLUTION_TIME], cr.sla_violation AS [SLA_VIOLADO_CA], z_TPS.code AS [COD_SOLUCAO] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id WHERE cr.type = 'R' AND z_TPS.code IN ('TSS1', 'TSS2', 'TSS3', 'TSS4') AND (cr.status = 'CL' AND cr.status != 'CNCL') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY cr.ref_num, cr.sla_violation, z_TPS.code ), --ciclo de vida das TAREFAS CHAMADOS CTE_TAREFAS_SLA_CICLO AS ( SELECT cr.ref_num as [CHAMADO], crwf.description as [TAREFA_NOME], cnt.last_name as [TAREFA_GRUPO], crwf.id as [TAREFA_ID], crwf.sequence as [SEQUENCE], SUM(z_ciclo_task.tempo_sla) as [TOTAL_TAREFA_TEMPO_UTIL], z_TPS.code AS [COD_SOLUCAO] -- Informado por antonio para usar a COD_SOLUCAO categoria na tela de tarefa FROM crwf JOIN z_ciclo_task ON z_ciclo_task.crwf_id = crwf.id JOIN ca_contact cnt on crwf.group_id = cnt.contact_uuid JOIN call_req cr ON crwf.object_id = cr.persid JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id WHERE ( cnt.contact_type=2308 AND cnt.last_name IN ('GEPIN AS Atendimento') ) AND crwf.status='COMP' AND z_TPS.code IN ('TSS1', 'TSS2', 'TSS3', 'TSS4') AND DATEADD(ss, z_ciclo_task.dt_fim - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY crwf.object_id ,crwf.id, crwf.sequence, crwf.task , crwf.description ,cnt.last_name, cr.ref_num, z_TPS.code ), CTE_CHAMADO_SLA_CR AS ( SELECT DISTINCT cr.ref_num AS [CHAMADO], CASE WHEN (solicitacoes.[TOTAL_SOLUTION_TIME] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_SOLICITACAO_SLA_CICLO solicitacoes ON cr.ref_num = solicitacoes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'R' AND solicitacoes.[COD_SOLUCAO] IN ('TSS1', 'TSS2', 'TSS3', 'TSS4') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, solicitacoes.[TOTAL_SOLUTION_TIME], solicitacoes.[COD_SOLUCAO] ), CTE_CHAMADO_SLA_CR_WF AS ( SELECT cr.ref_num AS [CHAMADO], solicitacoes.[TAREFA_ID], solicitacoes.[SEQUENCE], CASE WHEN (solicitacoes.[TOTAL_TAREFA_TEMPO_UTIL] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_TAREFAS_SLA_CICLO solicitacoes ON cr.ref_num = solicitacoes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND cr.type = 'R' AND solicitacoes.[COD_SOLUCAO] IN ('TSS1', 'TSS2', 'TSS3', 'TSS4') AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, solicitacoes.[TOTAL_TAREFA_TEMPO_UTIL], solicitacoes.[TAREFA_ID], solicitacoes.[SEQUENCE], solicitacoes.[COD_SOLUCAO] ), -- SG1DS - Mensal CTE_Chamados AS ( SELECT cr.ref_num AS [CHAMADO], z_TPS.code AS [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN prob_ctg pcat ON cr.category = pcat.persid JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id LEFT JOIN CTE_CHAMADO_SLA_CR CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'R' AND cr.status = 'CL' ) AND z_TPS.code IN ('TSS1', 'TSS2', 'TSS3', 'TSS4') AND (grp.contact_type = 2308 ) AND grp.last_name IN ('GEPIN AS Atendimento') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), --OBTEM TODAS AS TAREFAS DO CHAMADO QUE VALEM COMO CHAMADO CTE_Chamados_CR_WF AS ( SELECT cr.ref_num AS [CHAMADO], CS.TAREFA_ID as [TAREFA_ID], CS.[SEQUENCE], z_TPS.code AS [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_CR_WF FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN prob_ctg pcat ON cr.category = pcat.persid JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id JOIN CTE_CHAMADO_SLA_CR_WF CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'R' AND cr.status = 'CL' ) AND z_TPS.code IN ('TSS1', 'TSS2', 'TSS3', 'TSS4') AND (grp.contact_type = 2308 ) AND grp.last_name IN ('GEPIN AS Atendimento') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), -- RDM x TAREFAS CTE_Chamados_RDM_WF AS ( SELECT chg.chg_ref_num as [CHAMADO], wf.id as [TAREFA_ID], wf.sequence as [TAREFA_SEQUENCE], wf.description as [TAREFA_NOME], cnt.last_name as [TAREFA_GRUPO], SUM(z_ciclo_task.tempo_sla) as [TOTAL_TAREFA_TEMPO_UTIL], SUBSTRING(sdsc.sym, CHARINDEX('TSS', sdsc.sym), 4) AS [COD_SOLUCAO], CASE SUBSTRING(sdsc.sym, CHARINDEX('TSS', sdsc.sym), 4) WHEN 'TSS1' THEN 1800 -- 30Min WHEN 'TSS2' THEN 3600 -- 1H WHEN 'TSS3' THEN 7200 -- 2H WHEN 'TSS4' THEN 14400 -- 4H -- Leva em consideração valores do documento INDICADORES ELSE 0 END AS [SLA_EM_SEGUNDOS], CASE WHEN SUM(z_ciclo_task.tempo_sla) > CASE SUBSTRING(sdsc.sym, CHARINDEX('TSS', sdsc.sym), 4) WHEN 'TSS1' THEN 1800 WHEN 'TSS2' THEN 3600 WHEN 'TSS3' THEN 7200 WHEN 'TSS4' THEN 14400 ELSE 0 END THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM wf JOIN z_ciclo_task ON z_ciclo_task.wf_id = wf.id JOIN ca_contact cnt on wf.group_id = cnt.contact_uuid JOIN chg ON wf.object_id = chg.id JOIN srv_desc sdsc ON wf.support_lev = sdsc.persid LEFT JOIN ATTACHED_SLA sla ON wf.id = sla.ticket_id AND sla.ticket_type = 'wf' --JOIN chgcat pcat ON pcat.code = chg.category NÃO USAMOS COD_SOLUCAO categoria, porque NAO EXISTE COD ATRELADO WHERE ( cnt.contact_type = 2308 AND cnt.last_name IN ('GEPIN AS Atendimento') ) AND (wf.status='COMP' AND wf.object_type='chg') AND (sdsc.sym like '%TSS1' OR sdsc.sym like '%TSS2'OR sdsc.sym like '%TSS3' OR sdsc.sym like '%TSS4') AND DATEADD(ss, z_ciclo_task.dt_fim - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY wf.object_id ,wf.id ,wf.task ,wf.description ,cnt.last_name, chg.chg_ref_num, sdsc.sym, wf.id, wf.sequence ), All_Solutions AS ( SELECT COD_SOLUCAO FROM (VALUES ('TSS1'), ('TSS2'), ('TSS3'), ('TSS4')) AS T(COD_SOLUCAO) ), -- Combina os chamados de SOLICITAÇÕES E TAREFAS_SOLICITACOES CTE_CHAMADOS_COMBINADOS AS ( SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados UNION ALL SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados_CR_WF --Tarefas dos chamados UNION ALL SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados_RDM_WF --Tarefas das RDMs ) -- Consulta final usando a nova coluna de SLA SELECT A.COD_SOLUCAO AS priority, COUNT(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1 END) AS fulfilled, -- Utilizando a nova coluna COUNT(C.COD_SOLUCAO) AS total, ISNULL(AVG(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1.0 ELSE 0 END), 0) AS result -- Utilizando a nova coluna FROM All_Solutions AS A LEFT JOIN CTE_CHAMADOS_COMBINADOS AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO GROUP BY A.COD_SOLUCAO ORDER BY A.COD_SOLUCAO; ``` ### SG2DS - Mensal NOVO $$ \frac{SolicitaçõesTSSx – SolicitaçõesTSSxEncerradosAtraso}{SolicitaçõesTSSx} $$ - Tipo = Solicitação - Status = Fechada - Grupo Solucionador = 'GEPIN AS Atendimento' - Grupo de prioridades = TSS5, TSS6, TSS7, TSS8, TSS9, TSS10 - Encerrados com atraso = campo `VIOLACAO_SLA_NOVO = 1` - Campos utilizados dentro da CTE `CTE_Chamados`: - `CHAMADO` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - Campos utilizados dentro da CTE `CTE_Chamados_CR_WF`: - `CHAMADO` - `TAREFA_ID` - `SEQUENCE = Sequência da tarefa no chamado` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` - Campos utilizados dentro da CTE `CTE_Chamados_RDM_WF`: - `CHAMADO` - `TAREFA_ID` - `TAREFA_SEQUENCE = Sequência da tarefa no chamado` - `TAREFA_NOME = Desrição da tarefa no chamado` - `TAREFA_GRUPO = GRUPO da tarefa no chamado` - `COD_SOLUCAO = Baseado na Categoria` - `VIOLACAO_SLA_NOVO = Flag que faz o somatório do tempo útil e compara com evento do SLA` > sql ``` *sql -- ### SG2DS WITH -- ciclo de vida dos CHAMADO CTE_SOLICITACAO_SLA_CICLO AS ( SELECT cr.ref_num AS [CHAMADO], SUM(CAST(zciclo_cr.z_dur_Time_spent_group AS INT)) AS [TOTAL_SOLUTION_TIME], cr.sla_violation AS [SLA_VIOLADO_CA], z_TPS.code AS [COD_SOLUCAO] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id WHERE cr.type = 'R' AND z_TPS.code IN ('TSS5', 'TSS6', 'TSS7', 'TSS8', 'TSS9') AND (cr.status = 'CL' AND cr.status != 'CNCL') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY cr.ref_num, cr.sla_violation, z_TPS.code ), --ciclo de vida das TAREFAS CHAMADOS CTE_TAREFAS_SLA_CICLO AS ( SELECT cr.ref_num as [CHAMADO], crwf.description as [TAREFA_NOME], cnt.last_name as [TAREFA_GRUPO], crwf.id as [TAREFA_ID], crwf.sequence as [SEQUENCE], SUM(z_ciclo_task.tempo_sla) as [TOTAL_TAREFA_TEMPO_UTIL], z_TPS.code AS [COD_SOLUCAO] -- Informado por antonio para usar a COD_SOLUCAO categoria na tela de tarefa FROM crwf JOIN z_ciclo_task ON z_ciclo_task.crwf_id = crwf.id JOIN ca_contact cnt on crwf.group_id = cnt.contact_uuid JOIN call_req cr ON crwf.object_id = cr.persid JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id WHERE ( cnt.contact_type=2308 AND cnt.last_name IN (' ``` ## IRE - Mensal - SQL NOVO $$ \frac{Eventos – EventosTratadosAtrasoErro}{Eventos} $$ - Tipo = Incidente - Status = Fechada - Grupo Solucionador = NOC - Categoria = Qualquer uma que contenha a palavra "Monitoramento" - Encerrados com atraso = tempo até o atendimento maior que 20 minutos - Bases utilizadas = `dbo.ZCVCR`, `dbo.CHAMADOS` - Campos utilizados dentro da base `dbo.CHAMADOS`: - `CHAMADO` - `ID_CICLO` - `DATA_SOLUCAO` - `STATUS` - `CATEGORIA` - `TIPO_CHAMADO` - `GRUPO_SOLUCIONADOR` - Campos utilizados dentro da base `dbo.ZCVCR`: - `CHAMADO_CICLO` - `ID_CICLO` - `ULT_MOD_CICLO` - `ATIVIDADE_CICLO` - `GRUPO_CICLO` - `STATUS_ANTERIOR_CICLO` - `STATUS_ATUAL_CICLO` ## IRE - Mensal - SQL NOVO ```*sql -- IRE MONITORAMENTO WITH CTE AS ( SELECT cr.ref_num AS [CHAMADO_CICLO], MIN(zciclo_cr.last_mod_dt) AS MIN_ULT_MOD_CICLO FROM z_ciclo_de_vida_cr zciclo_cr JOIN call_req cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN ca_contact grp ON grp.contact_uuid = zciclo_cr.z_srl_Group JOIN act_type ON act_type.code = zciclo_cr.z_srl_Activity WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND grp.last_name = 'NOC' AND act_type.sym = 'Atualizar status' AND zciclo_cr.z_srl_OldStatus = 'OP' --Aberta AND zciclo_cr.z_srl_Status = 'WIP' --Em atendimento GROUP BY cr.ref_num ), CTE2 AS ( SELECT C.ref_num as [CHAMADO], MIN(CTE.MIN_ULT_MOD_CICLO) - MIN(C.open_date) AS TEMPO_ATE_ATENDIMENTO FROM call_req C JOIN z_ciclo_de_vida_cr Z ON C.persid = Z.z_srl_Persistent_id JOIN CTE ON C.ref_num = CTE.CHAMADO_CICLO JOIN prob_ctg pcat ON pcat.persid = C.category JOIN ca_contact grp ON grp.contact_uuid = C.group_id WHERE DATEADD(ss, C.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND C.STATUS = 'CL' AND pcat.sym LIKE '%Monitoramento%' AND C.type = 'I' AND grp.last_name = 'NOC' GROUP BY C.ref_num ) SELECT COUNT(CASE WHEN C.TEMPO_ATE_ATENDIMENTO <= 1200 THEN 1 END) AS ATENDIDOS, COUNT(*) AS TOTAL, AVG(CASE WHEN C.TEMPO_ATE_ATENDIMENTO <= 1200 THEN 1.0 ELSE 0 END) AS IRE FROM CTE2 AS C; ``` ## CSE - Mensal - SQL NOVO $$ \frac{ChamadosExecutadosSemErro}{ChamadosExecutados} $$ - Tipo = Rotina, Solicitação, Incidente - Status = Fechada - Grupo Solucionador = NOC - Encerrados com atraso = campo `SLA_VIOLADO = 1` - Campos utilizados dentro da base `dbo.CHAMADOS`: - `SLA_VIOLADO` - `CHAMADO` - `DATA_SOLUCAO` - `GRUPO_SOLUCIONADOR` - `STATUS` - `TIPO_CHAMADO` ## CSE - Mensal - SQL NOVO ```*sql -- ### CSE - MENSAL WITH -- ciclo de vida dos CHAMADO SOLICITAÇÕES/ROTINAS CTE_SOLICITACAO_SLA_CICLO_SOL AS ( SELECT cr.ref_num AS [CHAMADO], SUM(CAST(zciclo_cr.z_dur_Time_spent_group AS INT)) AS [TOTAL_SOLUTION_TIME], cr.sla_violation AS [SLA_VIOLADO_CA], z_TPS.code AS [COD_SOLUCAO] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id JOIN ca_contact grp ON grp.contact_uuid = cr.group_id WHERE cr.type = 'R' AND grp.last_name = 'NOC' AND (z_TPS.code like 'TSR%' OR z_TPS.code like 'TSS%') -- Pega todos TSS e TSR AND (cr.status = 'CL' AND cr.status != 'CNCL') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY cr.ref_num, cr.sla_violation, z_TPS.code ), -- ciclo de vida dos CHAMADO INCIDENTES CTE_SOLICITACAO_SLA_CICLO_INC AS ( SELECT cr.ref_num AS [CHAMADO], SUM(CAST(zciclo_cr.z_dur_Time_spent_group AS INT)) AS [TOTAL_SOLUTION_TIME], cr.sla_violation AS [SLA_VIOLADO_CA], CASE WHEN pri.sym = 'P1' THEN 'TSI1' WHEN pri.sym = 'P2' THEN 'TSI2' WHEN pri.sym = 'P3' THEN 'TSI3' WHEN pri.sym = 'P4' THEN 'TSI4' WHEN pri.sym = 'P5' THEN 'TSI5' WHEN pri.sym = 'P6' THEN 'TSI6' WHEN pri.sym = 'P7' THEN 'TSI7' ELSE pri.sym END as [COD_SOLUCAO] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN pri ON cr.priority = pri.enum JOIN ca_contact grp ON grp.contact_uuid = cr.group_id WHERE cr.type = 'I' AND grp.last_name = 'NOC' AND pri.sym IN ('P1','P2','P3','P4','P5', 'P6', 'P7') AND (cr.status = 'CL' AND cr.status != 'CNCL') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY cr.ref_num, pri.sym, cr.sla_violation ), -- COMPARA o SOMATORIO DO LOG com o SLA de SOLICITAÇÕES/ROTINAS CTE_CHAMADO_SLA_SOL AS ( SELECT DISTINCT cr.ref_num AS [CHAMADO], CASE WHEN (solicitacoes.[TOTAL_SOLUTION_TIME] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN ca_contact grp ON grp.contact_uuid = cr.group_id JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_SOLICITACAO_SLA_CICLO_SOL solicitacoes ON cr.ref_num = solicitacoes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND grp.last_name = 'NOC' AND cr.type = 'R' AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, solicitacoes.[TOTAL_SOLUTION_TIME], solicitacoes.[COD_SOLUCAO] ), -- COMPARA o SOMATORIO DO LOG com o SLA de INCIDENTES CTE_CHAMADO_SLA_INC AS ( SELECT DISTINCT cr.ref_num AS [CHAMADO], CASE WHEN (incidentes.[TOTAL_SOLUTION_TIME] > slatpl.elapsed) THEN 1 ELSE 0 END AS [VIOLACAO_SLA_NOVO] FROM call_req cr JOIN ca_contact grp ON grp.contact_uuid = cr.group_id JOIN attached_sla ON cr.persid = attached_sla.mapped_cr JOIN srv_desc ON attached_sla.map_sdsc = srv_desc.persid JOIN att_evt ON cr.persid = att_evt.obj_id JOIN evt ON att_evt.event_tmpl = evt.persid JOIN slatpl ON srv_desc.persid = slatpl.service_type JOIN CTE_SOLICITACAO_SLA_CICLO_INC incidentes ON cr.ref_num = incidentes.[CHAMADO] WHERE DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND (cr.status = 'CL' AND cr.status != 'CNCL') AND grp.last_name = 'NOC' AND cr.type = 'I' AND slatpl.object_type = 'cr' AND (evt.sym = 'Violação de SLA' AND slatpl.sym = 'Violar') -- nome_evt em template e nome_evt no chamado GROUP BY cr.ref_num, srv_desc.sym, slatpl.elapsed, cr.sla_violation, incidentes.[TOTAL_SOLUTION_TIME], incidentes.[COD_SOLUCAO] ), CTE_Chamados_SOL AS ( SELECT cr.ref_num AS [CHAMADO], z_TPS.code AS [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_SOL FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN prob_ctg pcat ON cr.category = pcat.persid JOIN z_TPS ON pcat.ztempo_servico = z_TPS.id LEFT JOIN CTE_CHAMADO_SLA_SOL CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'R' AND cr.status = 'CL' ) AND (grp.contact_type = 2308 ) AND (z_TPS.code like 'TSR%' OR z_TPS.code like 'TSS%') -- Pega todos TSS e TSR AND grp.last_name = 'NOC' AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), CTE_Chamados_INC AS ( SELECT cr.ref_num AS [CHAMADO], CASE WHEN pri.sym = 'P1' THEN 'TSI1' WHEN pri.sym = 'P2' THEN 'TSI2' WHEN pri.sym = 'P3' THEN 'TSI3' WHEN pri.sym = 'P4' THEN 'TSI4' WHEN pri.sym = 'P5' THEN 'TSI5' WHEN pri.sym = 'P6' THEN 'TSI6' WHEN pri.sym = 'P7' THEN 'TSI7' ELSE pri.sym END as [COD_SOLUCAO], CS.VIOLACAO_SLA_NOVO -- Adicionando a coluna VIOLACAO_SLA_NOVO da CTE_CHAMADO_SLA_SOL FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN prob_ctg pcat ON cr.category = pcat.persid JOIN pri ON cr.priority = pri.enum LEFT JOIN CTE_CHAMADO_SLA_INC CS ON cr.ref_num = CS.CHAMADO -- Associando a nova coluna usando o CHAMADO WHERE (cr.type = 'I' AND cr.status = 'CL' ) --Tipo incidentes AND (grp.contact_type = 2308 ) AND pri.sym IN ('P1','P2','P3','P4','P5', 'P6', 'P7') --Pega todos os Incidentes, equivale TSI1 ao TSI7 AND grp.last_name = 'NOC' AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' ), -- Combina os chamados de SOLICITAÇÕES/ROTINAS E INCIDENTES CTE_CHAMADOS_COMBINADOS AS ( SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados_SOL -- CHAMADOS do tipo SOLICITAÇÕES/ROTINAS UNION ALL SELECT CHAMADO, COD_SOLUCAO, VIOLACAO_SLA_NOVO FROM CTE_Chamados_INC -- CHAMADOS do tipo INCIDENTES ) -- Consulta final usando a nova coluna de SLA SELECT C.COD_SOLUCAO AS PRIORIDADE, COUNT(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1 END) AS [ATENDIDOS], -- Utilizando a nova coluna COUNT(C.COD_SOLUCAO) AS TOTAL, ISNULL(AVG(CASE WHEN C.VIOLACAO_SLA_NOVO = 0 THEN 1.0 ELSE 0 END), 0) AS CSE -- Utilizando a nova coluna FROM CTE_CHAMADOS_COMBINADOS C GROUP BY C.COD_SOLUCAO ORDER BY C.COD_SOLUCAO; ``` ## IGNC - Mensal - SQL NOVO $$ \frac{ChamadosResolvidos - ChamadosResolvidosEncAtraso}{ChamadosResolvidos} $$ - Tipo = Rotina, Solicitação, Incidente - Status = Fechada - Grupo Solucionador = N1_SERVICEDESK e todos do N2, exceto N2_CABEAMENTO - Encerrados com atraso = Soma do campo `TEMPO_SOLUCAO` com resultado superior a 5 horas - Campos utilizados dentro da base `dbo.CHAMADOS`: - `SLA_VIOLADO` - `CHAMADO` - `DATA_SOLUCAO` - `GRUPO_SOLUCIONADOR` - `STATUS` - `TIPO_CHAMADO` - `TEMPO_SOLUCAO` > sql >``` *sql > WITH TOTAL_SOLUTION_TIME AS ( > SELECT > CHAMADO, > SUM(CAST(TEMPO_SOLUCAO AS INT)) AS TOTAL_SOLUTION_TIME > FROM > dbo.CHAMADOS > WHERE > TIPO_CHAMADO IN ('Incidente', 'Solicitação', 'Rotina') > AND STATUS = 'Fechada' > AND ( > GRUPO_SOLUCIONADOR = 'N1_SERVICEDESK' > OR (GRUPO_SOLUCIONADOR LIKE 'N2_%' AND GRUPO_SOLUCIONADOR != 'N2_CABEAMENTO') > ) > AND DATEADD(ss, DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59' > GROUP BY CHAMADO >), >CTE_SLA_Violado AS ( > SELECT COUNT(*) AS Count_SLA_Violado > FROM TOTAL_SOLUTION_TIME AS T > WHERE T.TOTAL_SOLUTION_TIME > 5 * 60 * 60 >), >CTE_Total AS ( > SELECT COUNT(*) AS Count_Total > FROM TOTAL_SOLUTION_TIME >) > >SELECT > CTE_Total.Count_Total - CTE_SLA_Violado.Count_SLA_Violado AS ATENDIDOS, > CTE_Total.Count_Total AS TOTAL, > (CTE_Total.Count_Total - CTE_SLA_Violado.Count_SLA_Violado) * 1.0 / NULLIF(CTE_Total.Count_Total, 0) AS IGNC >FROM CTE_SLA_Violado, CTE_Total; ## IGNC - Mensal - SQL NOVO ``` *sql -- #IGNC - INCIDENTES,SOLICITACOES E ROTINAS WITH TOTAL_SOLUTION_TIME_CR AS ( SELECT cr.ref_num as [CHAMADO], SUM(zciclo.z_dur_Time_spent_group) as [TOTAL_SOLUTION_TIME] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo ON cr.persid = zciclo.z_srl_Persistent_id LEFT JOIN ca_contact cnt ON cr.group_id = cnt.contact_uuid WHERE (cr.type IN ('I', 'R')) -- incidente, solicitação, rotina AND (cr.status = 'CL') AND (cnt.contact_type = 2308 AND (cnt.last_name IN ('N1_SERVICEDESK') OR (cnt.last_name LIKE 'N2_%' AND cnt.last_name != 'N2_CABEAMENTO'))) AND DATEADD(ss, cr.resolve_date - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59' GROUP BY cr.ref_num ), TOTAL_SOLUTION_TIME_WF_CR AS ( SELECT crwf.id as [TAREFA_ID], SUM(z_ciclo_task.tempo_sla) as [TAREFA_TEMPO_UTIL] FROM crwf JOIN z_ciclo_task ON z_ciclo_task.crwf_id = crwf.id JOIN ca_contact cnt ON crwf.group_id = cnt.contact_uuid WHERE (crwf.status = 'COMP') AND (cnt.contact_type = 2308 AND (cnt.last_name IN ('N1_SERVICEDESK') OR (cnt.last_name LIKE 'N2_%' AND cnt.last_name != 'N2_CABEAMENTO'))) AND DATEADD(ss, crwf.completion_date - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59' GROUP BY crwf.id ), TOTAL_SOLUTION_TIME_WF_CHG AS ( SELECT wf.id as [TAREFA_ID], SUM(z_ciclo_task.tempo_sla) as [TAREFA_TEMPO_UTIL] FROM wf JOIN z_ciclo_task ON z_ciclo_task.crwf_id = wf.id JOIN ca_contact cnt ON wf.group_id = cnt.contact_uuid WHERE (wf.status = 'COMP') AND (cnt.contact_type = 2308 AND (cnt.last_name IN ('N1_SERVICEDESK') OR (cnt.last_name LIKE 'N2_%' AND cnt.last_name != 'N2_CABEAMENTO'))) AND DATEADD(ss, wf.completion_date - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59' GROUP BY wf.id ), CTE_SLA_Violado AS ( SELECT COUNT(*) AS Count_SLA_Violado FROM ( -- Somando os tempos de todas as CTEs SELECT [TOTAL_SOLUTION_TIME] FROM TOTAL_SOLUTION_TIME_CR UNION ALL SELECT [TAREFA_TEMPO_UTIL] AS [TOTAL_SOLUTION_TIME] FROM TOTAL_SOLUTION_TIME_WF_CR UNION ALL SELECT [TAREFA_TEMPO_UTIL] AS [TOTAL_SOLUTION_TIME] FROM TOTAL_SOLUTION_TIME_WF_CHG ) AS TotalSolutionTimes WHERE TotalSolutionTimes.TOTAL_SOLUTION_TIME > 5 * 60 * 60 -- SLA violado ), CTE_TOTAL AS ( SELECT COUNT(*) AS COUNT_TOTAL FROM ( -- Contabilizando todos os tempos de solução SELECT [TOTAL_SOLUTION_TIME] FROM TOTAL_SOLUTION_TIME_CR UNION ALL SELECT [TAREFA_TEMPO_UTIL] AS [TOTAL_SOLUTION_TIME] FROM TOTAL_SOLUTION_TIME_WF_CR UNION ALL SELECT [TAREFA_TEMPO_UTIL] AS [TOTAL_SOLUTION_TIME] FROM TOTAL_SOLUTION_TIME_WF_CHG ) AS TotalSolutionTimes ) SELECT CTE_TOTAL.COUNT_TOTAL - CTE_SLA_Violado.Count_SLA_Violado AS ATENDIDOS, CTE_TOTAL.COUNT_TOTAL AS TOTAL, (CTE_TOTAL.COUNT_TOTAL - CTE_SLA_Violado.Count_SLA_Violado) * 1.0 / NULLIF(CTE_TOTAL.COUNT_TOTAL, 0) as IGNC FROM CTE_SLA_Violado, CTE_TOTAL; GO ``` ## PDTC - Mensal $$ \frac{ChamadasDesistencia}{ChamadasTelefoneChat} $$ - Bases utilizadas = `qstats_mutano.queue_stats`, `qstats_mutano.qevent`, `qstats_mutano.qname`, `qstats_mutano.qagent` - Campos utilizados dentro da base `qstats_mutano.queue_stats`: - `qevent` - `qagent` - `qname` - `EVENT` - `uniqueid` - `momento_finalizada_abandonada` - `info3` - Campos utilizados dentro da base `qstats_mutano.qevent`: - `event_id` - Campos utilizados dentro da base `qstats_mutano.qname`: - `queue_id` - Campos utilizados dentro da base `qstats_mutano.qagent`: - `agent_id` > sql >``` *sql > SELECT > COUNT(CASE WHEN completadas_abandonadas.uniqueid IS NULL THEN 1 END) AS ATENDIDOS, > COUNT(ingressadas.uniqueid) AS TOTAL, > AVG(CASE WHEN completadas_abandonadas.uniqueid IS NOT NULL THEN 1.0 ELSE 0 END) AS PDTC >FROM ( > SELECT uniqueid, EVENT, info2 AS origem, DATETIME AS momento_entrada, qn.queue AS fila > FROM qstats_mutano.queue_stats qs > LEFT JOIN qstats_mutano.qevent qe ON (qs.qevent = qe.event_id) > LEFT JOIN qstats_mutano.qagent qa ON (qs.qagent = qa.agent_id) > LEFT JOIN qstats_mutano.qname qn ON (qs.qname = qn.queue_id) > WHERE CAST(qs.DATETIME AS DATE) BETWEEN CAST('2023-09-01 00:00:00' AS DATE) AND CAST('2023-12-31 23:59:59' AS DATE) > AND qs.qevent = 15 > AND qn.queue IN ('0131', '0132') >) ingressadas > >LEFT JOIN ( > SELECT uniqueid, EVENT, DATETIME AS momento_finalizada_abandonada, info3 AS tempo_espera_abandono > FROM qstats_mutano.queue_stats qs > LEFT JOIN qstats_mutano.qevent qe ON (qs.qevent = qe.event_id) > LEFT JOIN qstats_mutano.qagent qa ON (qs.qagent = qa.agent_id) > LEFT JOIN qstats_mutano.qname qn ON (qs.qname = qn.queue_id) > WHERE qs.qevent IN (1) > AND qn.queue IN ('0131', '0132') > AND qs.info3 > 15 >) completadas_abandonadas ON (ingressadas.uniqueid = completadas_abandonadas.uniqueid); ## TETC - Mensal $$ \frac{AtendimentosTelefoneChat – AtendimentosTempoEsperaExcedido}{AtendimentosTelefoneChat} $$ - Bases utilizadas = `qstats_mutano.queue_stats`, `qstats_mutano.qevent`, `qstats_mutano.qname`, `qstats_mutano.qagent` - Campos utilizados dentro da base `qstats_mutano.queue_stats`: - `qevent` - `qagent` - `qname` - `EVENT` - `uniqueid` - `momento_finalizada_abandonada` - `info3` - Campos utilizados dentro da base `qstats_mutano.qevent`: - `event_id` - Campos utilizados dentro da base `qstats_mutano.qname`: - `queue_id` - Campos utilizados dentro da base `qstats_mutano.qagent`: - `agent_id` > sql >``` *sql > SELECT > COUNT(CASE WHEN atendidas.tempo_espera_atendimento <= 60 THEN 1 END) AS ATENDIDOS, > COUNT(ingressadas.uniqueid) AS TOTAL, > AVG(CASE WHEN atendidas.tempo_espera_atendimento <= 60 THEN 1.0 ELSE 0 END) AS TETC >FROM ( > SELECT uniqueid, EVENT, info2 AS origem, DATETIME AS momento_entrada, qn.queue AS fila > FROM qstats_mutano.queue_stats qs > LEFT JOIN qstats_mutano.qevent qe ON (qs.qevent = qe.event_id) > LEFT JOIN qstats_mutano.qagent qa ON (qs.qagent = qa.agent_id) > LEFT JOIN qstats_mutano.qname qn ON (qs.qname = qn.queue_id) > WHERE CAST(qs.DATETIME AS DATE) BETWEEN CAST('2023-11-01 00:00:00' AS DATE) AND CAST('2023-11-30 23:59:59' AS DATE) > AND qs.qevent = 15 > AND qn.queue IN ('0131', '0132') >) ingressadas > >LEFT JOIN ( > SELECT uniqueid, EVENT, DATETIME AS momento_atendimento, qa.agent AS atendente, info1 AS >tempo_espera_atendimento > FROM qstats_mutano.queue_stats qs > LEFT JOIN qstats_mutano.qevent qe ON (qs.qevent = qe.event_id) > LEFT JOIN qstats_mutano.qagent qa ON (qs.qagent = qa.agent_id) > LEFT JOIN qstats_mutano.qname qn ON (qs.qname = qn.queue_id) > WHERE qs.qevent = 12 > AND qn.queue IN ('0131', '0132') >) atendidas ON (ingressadas.uniqueid = atendidas.uniqueid) > >LEFT JOIN ( > SELECT uniqueid, EVENT, DATETIME AS momento_finalizada_abandonada, info3 AS tempo_espera_abandono > FROM qstats_mutano.queue_stats qs > LEFT JOIN qstats_mutano.qevent qe ON (qs.qevent = qe.event_id) > LEFT JOIN qstats_mutano.qagent qa ON (qs.qagent = qa.agent_id) > LEFT JOIN qstats_mutano.qname qn ON (qs.qname = qn.queue_id) > WHERE qs.qevent IN (1) > AND qn.queue IN ('0131', '0132') > AND qs.info3 > 15 >) completadas_abandonadas ON (ingressadas.uniqueid = completadas_abandonadas.uniqueid) >WHERE completadas_abandonadas.uniqueid IS NOT NULL OR atendidas.uniqueid IS NOT NULL; ## TMN1 - Mensal $$ \frac{AtendimentosN1 – AtendimentosN1AcimaTempo}{AtendimentosN1} $$ - Bases utilizadas = `qstats_mutano.queue_stats`, `qstats_mutano.qevent`, `qstats_mutano.qname`, `qstats_mutano.qagent` - Campos utilizados dentro da base `qstats_mutano.queue_stats`: - `qevent` - `qagent` - `qname` - `EVENT` - `uniqueid` - `momento_finalizada_abandonada` - `info3` - Campos utilizados dentro da base `qstats_mutano.qevent`: - `event_id` - Campos utilizados dentro da base `qstats_mutano.qname`: - `queue_id` - Campos utilizados dentro da base `qstats_mutano.qagent`: - `agent_id` > sql >``` *sql > SELECT > COUNT(CASE WHEN completadas_atendidas.tempo_atendimento <= 1800 THEN 1 END) AS ATENDIDOS, > COUNT(atendidas.uniqueid) AS TOTAL, > COUNT(CASE WHEN completadas_atendidas.tempo_atendimento <= 1800 THEN 1 END) * 1.0 / >COUNT(atendidas.uniqueid) AS TMN1 >FROM ( > SELECT uniqueid, EVENT, info2 AS origem, DATETIME AS momento_entrada, qn.queue AS fila > FROM qstats_mutano.queue_stats qs > LEFT JOIN qstats_mutano.qevent qe ON (qs.qevent = qe.event_id) > LEFT JOIN qstats_mutano.qagent qa ON (qs.qagent = qa.agent_id) > LEFT JOIN qstats_mutano.qname qn ON (qs.qname = qn.queue_id) > WHERE CAST(qs.DATETIME AS DATE) BETWEEN CAST('2023-11-01 00:00:00' AS DATE) AND CAST('2023-11-30 23:59:59' AS DATE) > AND qs.qevent = 15 > AND qn.queue IN ('0131', '0132') >) ingressadas > >LEFT JOIN ( > SELECT uniqueid, EVENT, DATETIME AS momento_atendimento, qa.agent AS atendente, info1 AS tempo_espera_atendimento > FROM qstats_mutano.queue_stats qs > LEFT JOIN qstats_mutano.qevent qe ON (qs.qevent = qe.event_id) > LEFT JOIN qstats_mutano.qagent qa ON (qs.qagent = qa.agent_id) > LEFT JOIN qstats_mutano.qname qn ON (qs.qname = qn.queue_id) > WHERE qs.qevent = 12 > AND qn.queue IN ('0131', '0132') >) atendidas ON (ingressadas.uniqueid = atendidas.uniqueid) > >LEFT JOIN ( > SELECT uniqueid, EVENT, DATETIME AS momento_finalizada_atendida, info2 AS tempo_atendimento > FROM qstats_mutano.queue_stats qs > LEFT JOIN qstats_mutano.qevent qe ON (qs.qevent = qe.event_id) > LEFT JOIN qstats_mutano.qagent qa ON (qs.qagent = qa.agent_id) > LEFT JOIN qstats_mutano.qname qn ON (qs.qname = qn.queue_id) > WHERE qs.qevent IN (9, 10) > AND qn.queue IN ('0131', '0132') >) completadas_atendidas ON (ingressadas.uniqueid = completadas_atendidas.uniqueid); ## TAN1 - Mensal - SQL ANTIGO $$ \frac{ChamadosFechadosTransitadosN1 - ChamadosAtendidosAtraso}{ChamadosFechadosTransitadosN1} $$ - Tipo = Solicitação, Incidente - Status = Fechada - Grupo Atendimento = N1_SERVICEDESK - Atendidos com atraso = Mais de 30 minutos para o antendimento - Bases utilizadas = `dbo.ZCVCR`, `dbo.CHAMADOS` - Campos utilizados dentro da base `dbo.CHAMADOS`: - `CHAMADO` - `ID_CICLO` - `DATA_SOLUCAO` - `STATUS` - `CATEGORIA` - `TIPO_CHAMADO` - `GRUPO_ATENDIMENTO` - `VIP` - Campos utilizados dentro da base `dbo.ZCVCR`: - `CHAMADO_CICLO` - `ID_CICLO` - `ULT_MOD_CICLO` - `ATIVIDADE_CICLO` - `GRUPO_CICLO` - `STATUS_ANTERIOR_CICLO` - `STATUS_ATUAL_CICLO` > sql ``` *sql ``` ## TAN1 - Mensal - SQL NOVO ``` *sql -- TAN1 WITH CTE AS ( SELECT cr.ref_num AS [CHAMADO_CICLO], MIN(zciclo_cr.last_mod_dt) as [MIN_ULT_MOD_CICLO] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN ca_contact grp ON zciclo_cr.z_srl_Group = grp.contact_uuid WHERE (cr.status = 'CL' AND cr.status != 'CNCL') AND grp.last_name = 'N1_SERVICEDESK' -- passou N1 AND zciclo_cr.z_srl_Activity = 'ST' -- Atualizar Status AND (zciclo_cr.z_srl_OldStatus = 'OP' AND zciclo_cr.z_srl_Status = 'WIP') -- Aberto -> Atendimento AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' GROUP BY cr.ref_num, zciclo_cr.last_mod_dt ), CTE_VIP AS( SELECT cnt.contact_uuid as [USER_UUID], cnt.last_name as [NOME], cnt.userid as [USER_ID], CASE WHEN (hdn.sym IS NOT NULL) THEN 1 ELSE 0 END as [VIP] FROM ca_contact cnt LEFT JOIN usp_contact_handling cnth ON cnth.contact = cnt.contact_uuid LEFT JOIN usp_special_handling hdn ON hdn.id = cnth.special_handling WHERE hdn.sym IS NOT NULL AND cnt.inactive=0 ), CTE2 AS ( SELECT C.ref_num as [CHAMADO], SUM(Z.z_dur_Time_spent_group) AS [TOTAL_TEMPO_CICLO] ,CASE WHEN (CTE_VIP.USER_ID IS NOT NULL) THEN 1 ELSE 0 END as [VIP] FROM call_req C JOIN z_ciclo_de_vida_cr Z ON C.persid = Z.z_srl_Persistent_id JOIN ca_contact grp ON Z.z_srl_Group = grp.contact_uuid JOIN CTE ON C.ref_num = CTE.CHAMADO_CICLO LEFT JOIN CTE_VIP ON C.requested_by = CTE_VIP.USER_UUID WHERE DATEADD(ss, C.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND C.STATUS = 'CL' AND C.type IN ('I', 'R') AND grp.last_name = 'N1_SERVICEDESK' -- passou N1 GROUP BY C.ref_num ,CTE_VIP.USER_ID ) SELECT COUNT(CASE WHEN C.VIP = 0 AND C.TOTAL_TEMPO_CICLO <= 1800 THEN 1 WHEN C.VIP = 1 AND C.TOTAL_TEMPO_CICLO <= 1200 THEN 1 END) AS ATENDIDOS, COUNT(*) AS TOTAL, AVG(CASE WHEN C.VIP = 0 AND C.TOTAL_TEMPO_CICLO <= 1800 THEN 1.0 WHEN C.VIP = 1 AND C.TOTAL_TEMPO_CICLO <= 1200 THEN 1.0 ELSE 0 END) AS TAN1 FROM CTE2 AS C; ``` ## SCN1 - Mensal - SQL NOVO $$ \frac{ChamadosSolucionadosN1}{ChamadosRegistradosPassíveisN1} $$ - Tipo = Solicitação, Incidente - Status = Fechada - Grupo Atendimento = N1_SERVICEDESK - Campos utilizados dentro da base `dbo.CHAMADOS`: - `CHAMADO` - `GRUPO_SOLUCIONADOR` - `DATA_SOLUCAO` - `STATUS` - `CATEGORIA` - `TIPO_CHAMADO` > sql NOVO ```sql SELECT COUNT(CASE WHEN GRUPO_SOLUCIONADOR = 'N1_SERVICEDESK' THEN 1 END) AS ATENDIDOS, COUNT(*) AS TOTAL, AVG(CASE WHEN GRUPO_SOLUCIONADOR = 'N1_SERVICEDESK' THEN 1.0 ELSE 0 END) AS SCN1 FROM ( -- Lista os chamados que o N1_SERVICEDESK tocou (ciclo de vida) SELECT DISTINCT cr.ref_num as [CHAMADO], grp_log.last_name as [GRUPO_ATENDIMENTO], grp.last_name as [GRUPO_SOLUCIONADOR] FROM call_req cr JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id JOIN ca_contact grp_log ON grp_log.contact_uuid = zciclo_cr.z_srl_Group JOIN prob_ctg pcat ON pcat.persid = cr.category JOIN ca_contact grp ON grp.contact_uuid = cr.group_id WHERE grp_log.last_name IN ('N1_SERVICEDESK') -- N1 tocou no chamado AND cr.status = 'CL' AND cr.type IN ('I', 'R') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-07-01 00:00:00' AND '2024-07-31 23:59:59' AND pcat.sym IN ('ESTAÇÃO DE TRABALHO.DESKTOP.Erro.Mau Funcionamento (Equipamento funcionando mas apresenta algum problema ou lentidão)', 'ESTAÇÃO DE TRABALHO.NOTEBOOK.Erro.Mau Funcionamento (Equipamento funcionando mas apresenta algum problema ou lentidão)', 'ESTAÇÃO DE TRABALHO.SOFTWARE APLICATIVO.Erro.Mau Funcionamento do Aplicativo', 'APLICAÇÕES E SERVIÇOS CORPORATIVOS.SISTEMAS CLIENTE-SERVIDOR.Erro.Falha Individual em Sistema VB', 'SUPORTE AO USUÁRIO.ORIENTAÇÕES GERAIS.Execução.Esclarecimentos Ao Usuário Final', 'APLICAÇÕES E SERVIÇOS CORPORATIVOS.IMPRESSÃO.Implementação.Instalação / Configuração em Perfil de Usuário', 'APLICAÇÕES E SERVIÇOS CORPORATIVOS.SISTEMAS CLIENTE-SERVIDOR.Implementação.Instalação / Atualização de Sistema VB', 'ESTAÇÃO DE TRABALHO.SISTEMA OPERACIONAL.Administração.Configuração de Sistema Operacional', 'ESTAÇÃO DE TRABALHO.EMPRÉSTIMO.Administração.Reserva de equipamentos para emprestimo', 'COLABORAÇÃO.OFFICE 365 (TEAMS, SHAREPOINT, E-MAIL).Execução.Orientação ao usuário final', 'SEGURANÇA DA INFORMAÇÃO.CERTIFICADO DIGITAL.Implementação.Instalação de E-CPF em Estação / Perfil de Usuário', 'SUPORTE AO USUÁRIO.ACOMPANHAMENTO TÉCNICO.Administração.Reserva de acompanhamento técnico em reuniões e eventos internos e externos', 'ESTAÇÃO DE TRABALHO.SOFTWARE APLICATIVO.Implementação.Instalação / Atualização / Configuração / Remoção de Aplicativo') ) AS C; ``` ## PSAU - Mensal - SQL ANTIGO $$ \frac{RespostasBomOtimo}{Respostas} $$ - Tipo = Solicitação, Incidente - Status = Fechada - Grupo Atendimento = Todos, exceto N2_CABEAMENTO - Bases utilizadas = `dbo.CHAMADOS`, `dbo.PESQUISA` - Campos utilizados dentro da base `dbo.CHAMADOS`: - `CHAMADO` - `GRUPO_SOLUCIONADOR` - `DATA_SOLUCAO` - `STATUS` - `RESPOSTA` - `TIPO_CHAMADO` - Campos utilizados dentro da base `dbo.PESQUISA`: - `CHAMADO` > sql >``` *sql > SELECT > COUNT(CASE WHEN RESPOSTA IN (30,40) THEN 1 END) AS ATENDIDOS, > COUNT(*) AS TOTAL, > AVG(CASE WHEN RESPOSTA IN (30,40) THEN 1.0 ELSE 0 END) AS PSAU >FROM ( > SELECT DISTINCT CHAMADO > FROM dbo.CHAMADOS > WHERE DATEADD(ss, DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59' -- DATA PARA VALIDAÇÃO DA CONSULTA, POIS EXISTE POUCOS DADOS NA BASE PARA O MÊS ATUAL/ANTERIOR > AND STATUS = 'Fechada' > AND GRUPO_SOLUCIONADOR != 'N2_CABEAMENTO' > AND TIPO_CHAMADO IN ('Incidente', 'Solicitação') >) AS C >INNER JOIN dbo.PESQUISA AS P ON C.CHAMADO = P.CHAMADO; ## PSAU - Mensal - SQL NOVO ``` *sql SELECT COUNT(CASE WHEN PESQUISA.RESPOSTA IN ('Ótimo', 'Bom') THEN 1 END) AS ATENDIDOS, COUNT(*) AS TOTAL, AVG (CASE WHEN PESQUISA.RESPOSTA IN ('Ótimo', 'Bom') THEN 1.0 ELSE 0 END) AS PSAU FROM ( SELECT cr.ref_num AS [CHAMADO], CASE WHEN (cr.type = 'I') THEN 'INCIDENTE' ELSE 'SOLICITACAO/ROTINA' END AS [TIPO], cnt.last_name AS [USUARIO], grp.last_name AS [GRUPO_SOLUCIONADOR], FORMAT(dateadd(ss, cr.open_date - 10800, '1/1/1970'),'dd/MM/yyyy HH:mm:ss') AS [DATA_ABERTURA], FORMAT(dateadd(ss, svya.last_mod_dt - 10800, '1/1/1970'),'dd/MM/yyyy HH:mm:ss') AS [DATA_RESPOSTA], svy.nx_comment AS [COMENTARIO], svyq.txt AS [PERGUNTA], svya.txt AS [RESPOSTA] FROM call_req cr --JOIN PQ precisa ter respondido a pesquisa JOIN survey svy ON svy.object_id=cr.id JOIN survey_question svyq ON svy.id=svyq.owning_survey JOIN survey_answer svya ON svya.own_srvy_question=svyq.id JOIN ca_contact cnt ON svya.last_mod_by=cnt.contact_uuid JOIN ca_contact grp ON grp.contact_uuid=cr.group_id WHERE svya.selected=1 --RESPOSTA SELECIONADA AND (grp.contact_type = 2308 AND grp.last_name LIKE 'N2_%' ) AND grp.last_name NOT IN ('N2_CABEAMENTO') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2024-01-01 00:00:00' AND '2024-07-31 23:59:59' AND cr.status = 'CL' ) AS PESQUISA ``` ## TSSS - Mensal - SQL ANTIGO $$ \frac{ChamadosSupSistemas - ChamadosSupSistemasEncAtraso }{ChamadosSupSistemas} $$ - Tipo = Solicitação, Incidente - Status = Fechada - Grupo Atendimento = N2_SISTEMAS - Campos utilizados dentro da base `dbo.CHAMADOS`: - `CHAMADO` - `GRUPO_SOLUCIONADOR` - `DATA_SOLUCAO` - `STATUS` - `TEMPO_SOLUCAO` - `TIPO_CHAMADO` > sql >``` *sql > WITH TOTAL_SOLUTION_TIME AS ( > SELECT > CHAMADO, > SUM(CAST(TEMPO_SOLUCAO AS INT)) AS TOTAL_SOLUTION_TIME > FROM > dbo.CHAMADOS > WHERE > TIPO_CHAMADO IN ('Solicitação', 'Incidente') > AND STATUS = 'Fechada' > AND GRUPO_SOLUCIONADOR = 'N2_SISTEMAS' > AND DATEADD(ss, DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59' > GROUP BY CHAMADO >), >CTE_SLA_Violado AS ( > SELECT COUNT(*) AS Count_SLA_Violado > FROM TOTAL_SOLUTION_TIME AS T > WHERE T.TOTAL_SOLUTION_TIME > 2 * 60 * 60 >), >CTE_Total AS ( > SELECT COUNT(*) AS Count_Total > FROM TOTAL_SOLUTION_TIME >) >SELECT > CTE_Total.Count_Total - CTE_SLA_Violado.Count_SLA_Violado AS ATENDIDOS, > CTE_Total.Count_Total AS TOTAL, > (CTE_Total.Count_Total - CTE_SLA_Violado.Count_SLA_Violado) * 1.0 / NULLIF(CTE_Total.Count_Total, 0) AS TSSS >FROM CTE_SLA_Violado, CTE_Total; ## TSSS - Mensal - SQL NOVO ``` *sql WITH TOTAL_SOLUTION_TIME AS ( SELECT cr.ref_num as [CHAMADO], SUM(CAST(zciclo_cr.z_dur_Time_spent_group AS INT)) AS TOTAL_SOLUTION_TIME FROM call_req cr JOIN ca_contact grp ON cr.group_id = grp.contact_uuid JOIN z_ciclo_de_vida_cr zciclo_cr ON cr.persid = zciclo_cr.z_srl_Persistent_id WHERE cr.type IN ('I', 'R') AND cr.status = 'CL' AND (grp.contact_type = 2308 AND grp.last_name = 'N2_SISTEMAS') AND DATEADD(ss, cr.close_date - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59' GROUP BY cr.ref_num ), CTE_SLA_Violado AS ( SELECT COUNT(*) AS Count_SLA_Violado FROM TOTAL_SOLUTION_TIME AS T WHERE T.TOTAL_SOLUTION_TIME > 2 * 60 * 60 ), CTE_Total AS ( SELECT COUNT(*) AS Count_Total FROM TOTAL_SOLUTION_TIME ) SELECT CTE_Total.Count_Total - CTE_SLA_Violado.Count_SLA_Violado AS ATENDIDOS, CTE_Total.Count_Total AS TOTAL, (CTE_Total.Count_Total - CTE_SLA_Violado.Count_SLA_Violado) * 1.0 / NULLIF(CTE_Total.Count_Total, 0) AS TSSS FROM CTE_SLA_Violado, CTE_Total; ```