# Fórmulas e queries para indicadores SEFAZ
## XGnN2
### IG1N2 - Mensal SQL - ANTIGO
$$
\frac{IncidentesTSIx – IncidentesTSIxEncerradosAtraso}{IncidentesTSIx}
$$
- Tipo = Incidente
- Status = Fechada
- Grupo Solucionador = Todos do N2 exceto ('N2_CABEAMENTO', 'N2_SISTEMAS')
- Grupo de prioridades = TSI1, TSI2, TSI3, TSI4
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
> sql
>``` *sql
> WITH CTE_Chamados AS (
> SELECT DISTINCT CHAMADO, SLA_VIOLADO, >COD_SOLUCAO
> FROM dbo.CHAMADOS
> WHERE TIPO_CHAMADO = 'Incidente'
> AND STATUS = 'Fechada'
> AND GRUPO_SOLUCIONADOR LIKE 'N2_%'
> AND GRUPO_SOLUCIONADOR NOT IN('N2_CABEAMENTO', 'N2_SISTEMAS')
> AND DATEADD(ss, DATA_SOLUCAO - 10800, >'19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND COD_SOLUCAO IN ('TSI1', 'TSI2', 'TSI3', 'TSI4')
> ),
> All_Solutions AS (
> SELECT COD_SOLUCAO
> FROM (VALUES ('TSI1'), ('TSI2'), ('TSI3'), ('TSI4')) AS T(COD_SOLUCAO)
> )
> SELECT
> A.COD_SOLUCAO AS priority,
> COUNT(CASE WHEN C.SLA_VIOLADO = 0 THEN 1 END) AS fulfilled,
> COUNT(C.COD_SOLUCAO) AS total,
> ISNULL(AVG(CASE WHEN C.SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END), 0) AS result
> 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;
### SQL NOVO IG1N2
``` *sql
-- 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]);
-- IG1N2 - 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 LIKE 'N2_%' )
AND grp.last_name NOT IN ('N2_CABEAMENTO')
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 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 AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO
GROUP BY A.COD_SOLUCAO
ORDER BY A.COD_SOLUCAO;
```
### IG2N2 - Mensal - SQL ANTIGO
$$
\frac{IncidentesTSIx – IncidentesTSIxEncerradosAtraso}{IncidentesTSIx}
$$
- Tipo = Incidente
- Status = Fechada
- Grupo Solucionador = Todos do N2 exceto ('N2_CABEAMENTO', 'N2_SISTEMAS')
- Grupo de prioridades = TSI5, TSI6, TSI7
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
> sql
>``` *sql
> WITH CTE_Chamados AS (
> SELECT DISTINCT CHAMADO, SLA_VIOLADO, >COD_SOLUCAO
> FROM dbo.CHAMADOS
> WHERE TIPO_CHAMADO = 'Incidente'
> AND STATUS = 'Fechada'
> AND GRUPO_SOLUCIONADOR LIKE 'N2_%'
> AND GRUPO_SOLUCIONADOR NOT IN('N2_CABEAMENTO', 'N2_SISTEMAS')
> AND DATEADD(ss, DATA_SOLUCAO - 10800, >'19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND COD_SOLUCAO IN ('TSI5', 'TSI6', 'TSI7')
> ),
> All_Solutions AS (
> SELECT COD_SOLUCAO
> FROM (VALUES ('TSI5'), ('TSI6'), ('TSI7')) AS T(COD_SOLUCAO)
> )
> SELECT
> A.COD_SOLUCAO AS priority,
> COUNT(CASE WHEN C.SLA_VIOLADO = 0 THEN 1 END) AS fulfilled,
> COUNT(C.COD_SOLUCAO) AS total,
> ISNULL(AVG(CASE WHEN C.SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END), 0) AS result
> 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;
### IG2N2 - Mensal - SQL NOVO
``` *sql-- 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]
),
-- IG2N2 - 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 LIKE 'N2_%' )
AND grp.last_name NOT IN ('N2_CABEAMENTO')
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 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 AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO
GROUP BY A.COD_SOLUCAO
ORDER BY A.COD_SOLUCAO;
GO
```
### SG1N2 - Mensal - ANTIGO
$$
\frac{SolicitaçõesTSSx – SolicitaçõesTSSxEncerradosAtraso}{SolicitaçõesTSSx}
$$
- Tipo = Solicitação
- Status = Fechada
- Grupo Solucionador = Todos do N2 exceto ('N2_CABEAMENTO', 'N2_SISTEMAS')
- Grupo de prioridades = TSS1, TSS2, TSS3, TSS4
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
> sql
>``` *sql
> WITH CTE_Chamados AS (
> SELECT DISTINCT CHAMADO, SLA_VIOLADO, >COD_SOLUCAO
> FROM dbo.CHAMADOS
> WHERE TIPO_CHAMADO = 'Solicitação'
> AND STATUS = 'Fechada'
> AND GRUPO_SOLUCIONADOR LIKE 'N2_%'
> AND GRUPO_SOLUCIONADOR NOT IN('N2_CABEAMENTO', 'N2_SISTEMAS')
> AND DATEADD(ss, DATA_SOLUCAO - 10800, >'19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND COD_SOLUCAO IN ('TSS1', 'TSS2', 'TSS3', 'TSS4')
> ),
> All_Solutions AS (
> SELECT COD_SOLUCAO
> FROM (VALUES ('TSS1'), ('TSS2'), ('TSS3'), ('TSS4')) AS T(COD_SOLUCAO)
> )
> SELECT
> A.COD_SOLUCAO AS priority,
> COUNT(CASE WHEN C.SLA_VIOLADO = 0 THEN 1 END) AS fulfilled,
> COUNT(C.COD_SOLUCAO) AS total,
> ISNULL(AVG(CASE WHEN C.SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END), 0) AS result
> 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;
### SG1N2 - Mensal - SQL NOVO
``` *sql-- CTE_SOLICITACAO_SLA_CICLO
WITH
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
),
-- CTE_CHAMADO_SLA_CR
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]
),
-- SG1N2 - 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 LIKE 'N2_%' )
AND grp.last_name NOT IN ('N2_CABEAMENTO')
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 ('TSS1'), ('TSS2'), ('TSS3'), ('TSS4')) AS T(COD_SOLUCAO)
)
-- 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 AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO
GROUP BY A.COD_SOLUCAO
ORDER BY A.COD_SOLUCAO;
GO
```
### SG2N2 - Mensal - SQL ANTIGO
$$
\frac{SolicitaçõesTSSx – SolicitaçõesTSSxEncerradosAtraso}{SolicitaçõesTSSx}
$$
- Tipo = Solicitação
- Status = Fechada
- Grupo Solucionador = Todos do N2 exceto ('N2_CABEAMENTO', 'N2_SISTEMAS')
- Grupo de prioridades = TSS5, TSS6, TSS7, TSS8, TSS9, TSS10
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
> sql
>``` *sql
> WITH CTE_Chamados AS (
> SELECT DISTINCT CHAMADO, SLA_VIOLADO, >COD_SOLUCAO
> FROM dbo.CHAMADOS
> WHERE TIPO_CHAMADO = 'Solicitação'
> AND STATUS = 'Fechada'
> AND GRUPO_SOLUCIONADOR LIKE 'N2_%'
> AND GRUPO_SOLUCIONADOR NOT IN('N2_CABEAMENTO', 'N2_SISTEMAS')
> AND DATEADD(ss, DATA_SOLUCAO - 10800, >'19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND COD_SOLUCAO IN ('TSS5', 'TSS6', 'TSS7', 'TSS8', 'TSS9', 'TSS10')
> ),
> All_Solutions AS (
> SELECT COD_SOLUCAO
> FROM (VALUES ('TSS5'), ('TSS6'), ('TSS7'), ('TSS8'), ('TSS9'), ('TSS10')) AS T(COD_SOLUCAO)
> )
> SELECT
> A.COD_SOLUCAO AS priority,
> COUNT(CASE WHEN C.SLA_VIOLADO = 0 THEN 1 END) AS fulfilled,
> COUNT(C.COD_SOLUCAO) AS total,
> ISNULL(AVG(CASE WHEN C.SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END), 0) AS result
> 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;
### SG2N2 - Mensal - SQL NOVO
``` *sql-- CTE_SOLICITACAO_SLA_CICLO
WITH
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', 'TSS10')
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
),
-- CTE_CHAMADO_SLA_CR
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', 'TSS10')
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]
),
-- SG2N2 - 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', 'TSS10')
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-07-01 00:00:00' AND '2024-07-31 23:59:59'
),
All_Solutions AS (
SELECT COD_SOLUCAO
FROM (VALUES ('TSS5'), ('TSS6'), ('TSS7'), ('TSS8'), ('TSS9'), ('TSS10')) AS T(COD_SOLUCAO)
)
-- 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 AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO
GROUP BY A.COD_SOLUCAO
ORDER BY A.COD_SOLUCAO;
GO
```
### RG1N2 - Mensal - SLA ANTIGO
$$
\frac{RotinasTSRx – RotinasTSRxEncerradosAtraso}{RotinasTSRx}
$$
- Tipo = Rotina
- Status = Fechada
- Grupo Solucionador = Todos do N2, exceto ('N2_CABEAMENTO', 'N2_SISTEMAS')
- Grupo de prioridades = TSR1, TSR2, TSR3
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
> sql
>``` *sql
> WITH CTE_Chamados AS (
> SELECT DISTINCT CHAMADO, SLA_VIOLADO, >COD_SOLUCAO
> FROM dbo.CHAMADOS
> WHERE TIPO_CHAMADO = 'Solicitação'
> AND STATUS = 'Fechada'
> AND GRUPO_SOLUCIONADOR LIKE 'N2_%'
> AND GRUPO_SOLUCIONADOR NOT IN('N2_CABEAMENTO', 'N2_SISTEMAS')
> AND DATEADD(ss, DATA_SOLUCAO - 10800, >'19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND COD_SOLUCAO IN ('TSR1', 'TSR2', 'TSR3')
> ),
> All_Solutions AS (
> SELECT COD_SOLUCAO
> FROM (VALUES ('TSR1'), ('TSR2'), ('TSR3')) AS T(COD_SOLUCAO)
> )
> SELECT
> A.COD_SOLUCAO AS priority,
> COUNT(CASE WHEN C.SLA_VIOLADO = 0 THEN 1 END) AS fulfilled,
> COUNT(C.COD_SOLUCAO) AS total,
> ISNULL(AVG(CASE WHEN C.SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END), 0) AS result
> 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;
### RG1N2 - Mensal - SQL NOVO
``` *sql
-- CTE_SOLICITACAO_SLA_CICLO
WITH
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
),
-- CTE_CHAMADO_SLA_CR
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]
)```
-- RG1N2 - 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 LIKE 'N2_%' )
AND grp.last_name NOT IN ('N2_CABEAMENTO')
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)
)
-- 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 AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO
GROUP BY A.COD_SOLUCAO
ORDER BY A.COD_SOLUCAO;
GO
```
### RG2N2 - Mensal - SQL ANTIGO
$$
\frac{RotinasTSRx – RotinasTSRxEncerradosAtraso}{RotinasTSRx}
$$
- Tipo = Rotina
- Status = Fechada
- Grupo Solucionador = Todos do N2, exceto ('N2_CABEAMENTO', 'N2_SISTEMAS')
- Grupo de prioridades = TSR4, TSR5
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
> sql
>``` *sql
> WITH CTE_Chamados AS (
> SELECT DISTINCT CHAMADO, SLA_VIOLADO, >COD_SOLUCAO
> FROM dbo.CHAMADOS
> WHERE TIPO_CHAMADO = 'Solicitação'
> AND STATUS = 'Fechada'
> AND GRUPO_SOLUCIONADOR LIKE 'N2_%'
> AND GRUPO_SOLUCIONADOR NOT IN('N2_CABEAMENTO', 'N2_SISTEMAS')
> AND DATEADD(ss, DATA_SOLUCAO - 10800, >'19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND COD_SOLUCAO IN ('TSR4', 'TSR5'),
> All_Solutions AS (
> SELECT COD_SOLUCAO
> FROM (VALUES ('TSR4'), ('TSR5')) AS T(COD_SOLUCAO)
> )
> SELECT
> A.COD_SOLUCAO AS priority,
> COUNT(CASE WHEN C.SLA_VIOLADO = 0 THEN 1 END) AS fulfilled,
> COUNT(C.COD_SOLUCAO) AS total,
> ISNULL(AVG(CASE WHEN C.SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END), 0) AS result
> 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;
### RG2N2 - Mensal - SQL NOVO
``` *sql
-- CTE_SOLICITACAO_SLA_CICLO
WITH
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
),
-- CTE_CHAMADO_SLA_CR
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]
),
-- RG1N2 - 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 LIKE 'N2_%' )
AND grp.last_name NOT IN ('N2_CABEAMENTO')
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)
)
-- 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 AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO
GROUP BY A.COD_SOLUCAO
ORDER BY A.COD_SOLUCAO;
GO
```
## XGnN3
### IG1N3 - Mensal - SQL ANTIGO
$$
\frac{IncidentesTSIx – IncidentesTSIxEncerradosAtraso}{IncidentesTSIx}
$$
- Tipo = Incidente
- Status = Fechada
- Grupo Solucionador = N3_SUPORTE, N3_REDES, N3_INFRA, N3_BANCO DE DADOS
- Grupo de prioridades = TSI1, TSI2, TSI3, TSI4
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
> sql
>```sql
> WITH CTE_Chamados AS (
> SELECT DISTINCT CHAMADO, SLA_VIOLADO, COD_SOLUCAO
> FROM dbo.CHAMADOS
> WHERE TIPO_CHAMADO = 'Incidente'
> AND STATUS = 'Fechada'
> AND GRUPO_SOLUCIONADOR IN ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS')
> AND DATEADD(ss, DATA_SOLUCAO - 10800, >'19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND COD_SOLUCAO IN ('TSI1', 'TSI2', 'TSI3', 'TSI4')
> ),
> CTE_SLA_Violado AS (
> SELECT COUNT(*) AS Count_SLA_Violado
> FROM CTE_Chamados
> WHERE SLA_VIOLADO != 0
> ),
> CTE_Total AS (
> SELECT COUNT(*) AS Count_Total
> FROM CTE_Chamados
> )
>
> 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 IG1N3
> FROM CTE_SLA_Violado, CTE_Total;
> ```
### IG1N3 - Mensal - SQL NOVO
``` *sql
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]
),
-- IG1N2 - 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 ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS', 'N3_SEGURANÇA')
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 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 AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO
GROUP BY A.COD_SOLUCAO
ORDER BY A.COD_SOLUCAO;
```
### IG2N3 - Mensal - SQL ANTIGO
$$
\frac{IncidentesTSIx – IncidentesTSIxEncerradosAtraso}{IncidentesTSIx}
$$
- Tipo = Incidente
- Status = Fechada
- Grupo Solucionador = N3_SUPORTE, N3_REDES, N3_INFRA, N3_BANCO DE DADOS
- Grupo de prioridades = TSI5, TSI6, TSI7
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
> sql
>``` *sql
> WITH CTE_Chamados AS (
> SELECT DISTINCT CHAMADO, SLA_VIOLADO, >COD_SOLUCAO
> FROM dbo.CHAMADOS
> WHERE TIPO_CHAMADO = 'Incidente'
> AND STATUS = 'Fechada'
> AND GRUPO_SOLUCIONADOR IN ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS')
> AND DATEADD(ss, DATA_SOLUCAO - 10800, >'19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND COD_SOLUCAO IN ('TSI5', 'TSI6', 'TSI7')
> ),
> All_Solutions AS (
> SELECT COD_SOLUCAO
> FROM (VALUES ('TSI5'), ('TSI6'), ('TSI7')) AS T(COD_SOLUCAO)
> )
> SELECT
> A.COD_SOLUCAO AS priority,
> COUNT(CASE WHEN C.SLA_VIOLADO = 0 THEN 1 END) AS fulfilled,
> COUNT(C.COD_SOLUCAO) AS total,
> ISNULL(AVG(CASE WHEN C.SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END), 0) AS result
> 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;
### IG2N3 - Mensal - SQL NOVO
``` *sql
-- IG2N3
-- 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]
),
-- IG2N3 - 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 ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS', 'N3_SEGURANÇA')
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 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 AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO
GROUP BY A.COD_SOLUCAO
ORDER BY A.COD_SOLUCAO;
```
### SG1N3 - Mensal
$$
\frac{SolicitaçõesTSSx – SolicitaçõesTSSxEncerradosAtraso}{SolicitaçõesTSSx}
$$
- Tipo = Solicitação
- Status = Fechada
- Grupo Solucionador = N3_SUPORTE, N3_REDES, N3_INFRA, N3_BANCO DE DADOS
- Grupo de prioridades = TSS1, TSS2, TSS3, TSS4
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Bases usadas: CHAMADOS, TAREFASCHAMADOS, TAREFASRDMS
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
- Campos utilizados dentro da base `dbo.TAREFASCHAMADOS`:
- `ID`
- `SLA_VIOLADO`
- `COD_SOLUCAO_TAREFA`
- `DATA_FINAL_TAREFA`
- `GRUPO_TAREFA`
- Campos utilizados dentro da base `dbo.TAREFASRDMS`:
- `ID`
- `SLA_VIOLADO`
- `COD_SOLUCAO_TAREFA`
- `DATA_FINAL_TAREFA`
- `GRUPO_TAREFA`
> sql
>``` *sql
> WITH CTE_Chamados AS (
> SELECT DISTINCT
> c.CHAMADO,
> NULL AS RDM,
> NULL AS TASK,
> c.SLA_VIOLADO,
> c.COD_SOLUCAO
> FROM dbo.CHAMADOS c
> WHERE
> c.TIPO_CHAMADO = 'Solicitação'
> AND c.STATUS = 'Fechada'
> AND c.GRUPO_SOLUCIONADOR IN ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS')
> AND DATEADD(ss, c.DATA_SOLUCAO - 10800, > '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND c.COD_SOLUCAO IN ('TSS1', 'TSS2', > 'TSS3', 'TSS4')
>
> UNION ALL
>
> SELECT DISTINCT
> NULL AS CHAMADO,
> NULL AS RDM,
> tc.ID AS TASK,
> tc.SLA_VIOLADO,
> tc.COD_SOLUCAO_TAREFA AS COD_SOLUCAO
> FROM dbo.TAREFASCHAMADOS tc
> WHERE 1=1
> AND tc.GRUPO_TAREFA IN ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS')
> AND DATEADD(ss, tc.DATA_FINAL_TAREFA - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND tc.COD_SOLUCAO_TAREFA IN ('TSS1', 'TSS2', 'TSS3', 'TSS4')
>
> UNION ALL
>
> SELECT DISTINCT
> NULL AS CHAMADO,
> r.ID AS RDM,
> NULL AS TASK,
> r.SLA_VIOLADO,
> r.COD_SOLUCAO_TAREFA AS COD_SOLUCAO
> FROM dbo.TAREFASRDMS r
> WHERE 1=1
> AND r.GRUPO_TAREFA IN ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS')
> AND DATEADD(ss, r.DATA_FINAL_TAREFA - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND r.COD_SOLUCAO_TAREFA IN ('TSS1', 'TSS2', 'TSS3', 'TSS4')
> ),
> All_Solutions AS (
> SELECT COD_SOLUCAO
> FROM (VALUES ('TSS1'), ('TSS2'), ('TSS3'), ('TSS4')) AS T(COD_SOLUCAO)
> )
> SELECT
> A.COD_SOLUCAO AS priority,
> COUNT(CASE WHEN C.SLA_VIOLADO = 0 THEN 1 END) AS fulfilled,
> COUNT(C.COD_SOLUCAO) AS total,
> ISNULL(AVG(CASE WHEN C.SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END), 0) AS result
> 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;
### SG2N3 - Mensal
$$
\frac{SolicitaçõesTSSx – SolicitaçõesTSSxEncerradosAtraso}{SolicitaçõesTSSx}
$$
- Tipo = Solicitação
- Status = Fechada
- Grupo Solucionador = N3_SUPORTE, N3_REDES, N3_INFRA, N3_BANCO DE DADOS
- Grupo de prioridades = TSS5, TSS6, TSS7, TSS8, TSS9, TSS10
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Bases usadas: CHAMADOS, TAREFASCHAMADOS, TAREFASRDMS
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
- Campos utilizados dentro da base `dbo.TAREFASCHAMADOS`:
- `ID`
- `SLA_VIOLADO`
- `COD_SOLUCAO_TAREFA`
- `DATA_FINAL_TAREFA`
- `GRUPO_TAREFA`
- Campos utilizados dentro da base `dbo.TAREFASRDMS`:
- `ID`
- `SLA_VIOLADO`
- `COD_SOLUCAO_TAREFA`
- `DATA_FINAL_TAREFA`
- `GRUPO_TAREFA`
> sql
>``` *sql
> WITH CTE_Chamados AS (
> SELECT DISTINCT
> c.CHAMADO,
> NULL AS RDM,
> NULL AS TASK,
> c.SLA_VIOLADO,
> c.COD_SOLUCAO
> FROM dbo.CHAMADOS c
> WHERE
> c.TIPO_CHAMADO = 'Solicitação'
> AND c.STATUS = 'Fechada'
> AND c.GRUPO_SOLUCIONADOR IN ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS')
> AND DATEADD(ss, c.DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND c.COD_SOLUCAO IN ('TSS5', 'TSS6', 'TSS7', 'TSS8', 'TSS9', 'TSS10')
>
> UNION ALL
>
> SELECT DISTINCT
> NULL AS CHAMADO,
> NULL AS RDM,
> tc.ID AS TASK,
> tc.SLA_VIOLADO,
> tc.COD_SOLUCAO_TAREFA AS COD_SOLUCAO
> FROM dbo.TAREFASCHAMADOS tc
> WHERE 1=1
> AND tc.GRUPO_TAREFA IN ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS')
> AND DATEADD(ss, tc.DATA_FINAL_TAREFA - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND tc.COD_SOLUCAO_TAREFA IN ('TSS5', 'TSS6', 'TSS7', 'TSS8', 'TSS9', 'TSS10')
>
> UNION ALL
>
> SELECT DISTINCT
> NULL AS CHAMADO,
> r.ID AS RDM,
> NULL AS TASK,
> r.SLA_VIOLADO,
> r.COD_SOLUCAO_TAREFA AS COD_SOLUCAO
> FROM dbo.TAREFASRDMS r
> WHERE 1=1
> AND r.GRUPO_TAREFA IN ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS')
> AND DATEADD(ss, r.DATA_FINAL_TAREFA - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND r.COD_SOLUCAO_TAREFA IN ('TSS5', 'TSS6', 'TSS7', 'TSS8', 'TSS9', 'TSS10')
> ),
> All_Solutions AS (
> SELECT COD_SOLUCAO
> FROM (VALUES ('TSS5'), ('TSS6'), ('TSS7'), ('TSS8'), ('TSS9'), ('TSS10')) AS T(COD_SOLUCAO)
> )
> SELECT
> A.COD_SOLUCAO AS priority,
> COUNT(CASE WHEN C.SLA_VIOLADO = 0 THEN 1 END) AS fulfilled,
> COUNT(C.COD_SOLUCAO) AS total,
> ISNULL(AVG(CASE WHEN C.SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END), 0) AS result
> 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 CASE WHEN A.COD_SOLUCAO = 'TSS10' THEN 1 ELSE 0 END, A.COD_SOLUCAO;
### RG1N3 - Mensal - SQL ANTIGO
$$
\frac{RotinasTSRx – RotinasTSRxEncerradosAtraso}{RotinasTSRx}
$$
- Tipo = Rotina
- Status = Fechada
- Grupo Solucionador = N3_SUPORTE, N3_REDES, N3_INFRA, N3_BANCO DE DADOS
- Grupo de prioridades = TSR1, TSR2, TSR3
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
> sql
>``` *sql
> WITH CTE_Charmados AS (
> SELECT DISTINCT CHAMADO, SLA_VIOLADO
> FROM dbo.CHAMADOS
> WHERE TIPO_CHAMADO = 'Rotina'
> AND STATUS = 'Fechada'
> AND GRUPO_SOLUCIONADOR IN ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS')
> AND DATEADD(ss, DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND COD_SOLUCAO IN ('TSR1', 'TSR2', 'TSR3')
>),
>CTE_SLA_Violado AS (
> SELECT COUNT(*) AS Count_SLA_Violado
> FROM CTE_Charmados
> WHERE SLA_VIOLADO != 0
>),
>CTE_Total AS (
> SELECT COUNT(*) AS Count_Total
> FROM CTE_Charmados
>)
>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 RG1N3
>FROM CTE_SLA_Violado, CTE_Total;
### RG1N3 - Mensal - SQL NOVO
``` *sql
-- CTE_SOLICITACAO_SLA_CICLO
WITH
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
),
-- CTE_CHAMADO_SLA_CR
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]
),
-- RG1N3 - 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 ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS', 'N3_SEGURANÇA')
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)
)
-- 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 AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO
GROUP BY A.COD_SOLUCAO
ORDER BY A.COD_SOLUCAO;
```
### RG2N3 - Mensal - SQL ANTIGO
$$
\frac{RotinasTSRx – RotinasTSRxEncerradosAtraso}{RotinasTSRx}
$$
- Tipo = Rotina
- Status = Fechada
- Grupo Solucionador = N3_SUPORTE, N3_REDES, N3_INFRA, N3_BANCO DE DADOS
- Grupo de prioridades = TSR4, TSR5
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
> sql
>``` *sql
> WITH CTE_Charmados AS (
> SELECT DISTINCT CHAMADO, SLA_VIOLADO
> FROM dbo.CHAMADOS
> WHERE TIPO_CHAMADO = 'Rotina'
> AND STATUS = 'Fechada'
> AND GRUPO_SOLUCIONADOR IN ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS')
> AND DATEADD(ss, DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND COD_SOLUCAO IN ('TSR4', 'TSR5')
>),
>CTE_SLA_Violado AS (
> SELECT COUNT(*) AS Count_SLA_Violado
> FROM CTE_Charmados
> WHERE SLA_VIOLADO != 0
>),
>CTE_Total AS (
> SELECT COUNT(*) AS Count_Total
> FROM CTE_Charmados
>)
>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 RG2N3
>FROM CTE_SLA_Violado, CTE_Total;
### RG2N3 - Mensal - SQL NOVO
``` *sql
WITH
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
),
-- CTE_CHAMADO_SLA_CR
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]
),
-- RG2N3 - 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 ('N3_SUPORTE', 'N3_REDES', 'N3_INFRA', 'N3_BANCO DE DADOS', 'N3_SEGURANÇA')
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)
)
-- 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 AS C ON A.COD_SOLUCAO = C.COD_SOLUCAO
GROUP BY A.COD_SOLUCAO
ORDER BY A.COD_SOLUCAO;
```
## XGnPM
### IG1PM - Mensal
$$
\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 `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
- `DATA_ABERTURA`
- `SLA_ATENDIDO`
> sql
>``` *sql
> SELECT
> COUNT(CASE WHEN SLA_VIOLADO = 0 THEN 1 END) AS ATENDIDOS,
> COUNT(*) AS TOTAL,
> AVG(CASE WHEN SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END) AS IG1PM
>FROM (
> SELECT DISTINCT
> C.CHAMADO,
> C.SLA_VIOLADO,
> C.SLA_ATENDIDO,
> C.DATA_ABERTURA,
> C.DATA_SOLUCAO,
> C.COD_SOLUCAO
> FROM dbo.CHAMADOS AS C
> WHERE C.TIPO_CHAMADO = 'Incidente'
> AND C.STATUS = 'Fechada'
> AND C.GRUPO_SOLUCIONADOR IN ('PRODUÇÃO', 'NOC')
> AND DATEADD(ss, C.DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND C.COD_SOLUCAO IN ('TSI1', 'TSI2', 'TSI3', 'TSI4')
>) AS C;
### IG2PM - Mensal
$$
\frac{IncidentesTSIx – IncidentesTSIxEncerradosAtraso}{IncidentesTSIx}
$$
- Tipo = Incidente
- Status = Fechada
- Grupo Solucionador = PRODUÇÃO e NOC
- Grupo de prioridades = TSI5, TSI6, TSI7
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
- `DATA_ABERTURA`
- `SLA_ATENDIDO`
> sql
>``` *sql
> SELECT
> COUNT(CASE WHEN SLA_VIOLADO = 0 THEN 1 END) AS ATENDIDOS,
> COUNT(*) AS TOTAL,
> AVG(CASE WHEN SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END) AS IG2PM
>FROM (
> SELECT DISTINCT
> C.CHAMADO,
> C.SLA_VIOLADO,
> C.SLA_ATENDIDO,
> C.DATA_ABERTURA,
> C.DATA_SOLUCAO,
> C.COD_SOLUCAO
> FROM dbo.CHAMADOS AS C
> WHERE C.TIPO_CHAMADO = 'Incidente'
> AND C.STATUS = 'Fechada'
> AND C.GRUPO_SOLUCIONADOR IN ('PRODUÇÃO', 'NOC')
> AND DATEADD(ss, C.DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND C.COD_SOLUCAO IN ('TSI5', 'TSI6', 'TSI7')
>) AS C;
### SG1PM - Mensal
$$
\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 = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
- `DATA_ABERTURA`
- `SLA_ATENDIDO`
> sql
>``` *sql
> SELECT
> COUNT(CASE WHEN SLA_VIOLADO = 0 THEN 1 END) AS ATENDIDOS,
> COUNT(*) AS TOTAL,
> AVG(CASE WHEN SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END) AS SG1PM
>FROM (
> SELECT DISTINCT
> C.CHAMADO,
> C.SLA_VIOLADO,
> C.SLA_ATENDIDO,
> C.DATA_ABERTURA,
> C.DATA_SOLUCAO,
> C.COD_SOLUCAO
> FROM dbo.CHAMADOS AS C
> WHERE C.TIPO_CHAMADO = 'Solicitação'
> AND C.STATUS = 'Fechada'
> AND C.GRUPO_SOLUCIONADOR IN ('PRODUÇÃO', 'NOC')
> AND DATEADD(ss, C.DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-11-01 00:00:00' AND '2023-11-30 23:59:59'
> AND C.COD_SOLUCAO IN ('TSS1', 'TSS2', 'TSS3', 'TSS4')
>) AS C;
### SG2PM - Mensal
$$
\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 base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
- `DATA_ABERTURA`
- `SLA_ATENDIDO`
> sql
>``` *sql
> SELECT
> COUNT(CASE WHEN SLA_VIOLADO = 0 THEN 1 END) AS ATENDIDOS,
> COUNT(*) AS TOTAL,
> AVG(CASE WHEN SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END) AS SG2PM
> FROM (
> SELECT DISTINCT
> C.CHAMADO,
> C.SLA_VIOLADO,
> C.SLA_ATENDIDO,
> C.DATA_ABERTURA,
> C.DATA_SOLUCAO,
> C.COD_SOLUCAO
> FROM dbo.CHAMADOS AS C
> WHERE C.TIPO_CHAMADO = 'Solicitação'
> AND C.STATUS = 'Fechada'
> AND C.GRUPO_SOLUCIONADOR IN ('PRODUÇÃO', 'NOC')
> AND DATEADD(ss, C.DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-11-01 00:00:00' AND '2023-11-30 23:59:59'
> AND C.COD_SOLUCAO IN ('TSS5', 'TSS6', 'TSS7', 'TSS8', 'TSS9', 'TSS10')
>) AS C;
### RG1PM - Mensal
$$
\frac{RotinasTSRx – RotinasTSRxEncerradosAtraso}{RotinasTSRx}
$$
- Tipo = Rotina
- Status = Fechada
- Grupo Solucionador = PRODUÇÃO e NOC
- Grupo de prioridades = TSR1, TSR2, TSR3
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Bases usadas: CHAMADOS, TAREFASCHAMADOS
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
- Campos utilizados dentro da base `dbo.TAREFASCHAMADOS`:
- `ID`
- `SLA_VIOLADO`
- `COD_SOLUCAO_TAREFA`
- `DATA_FINAL_TAREFA`
- `GRUPO_TAREFA`
> sql
>``` *sql
> WITH CTE_Chamados AS (
> SELECT DISTINCT
> c.CHAMADO,
> NULL AS TASK,
> c.SLA_VIOLADO,
> c.COD_SOLUCAO
> FROM dbo.CHAMADOS c
> WHERE
> c.TIPO_CHAMADO = 'Rotina'
> AND c.STATUS = 'Fechada'
> AND c.GRUPO_SOLUCIONADOR IN ('PRODUÇÃO', 'NOC')
> AND DATEADD(ss, c.DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND c.COD_SOLUCAO IN ('TSR1','TSR2','TSR3')
>
> UNION ALL
>
> SELECT DISTINCT
> NULL AS CHAMADO,
> tc.ID AS TASK,
> tc.SLA_VIOLADO,
> tc.COD_SOLUCAO_TAREFA AS COD_SOLUCAO
> FROM dbo.TAREFASCHAMADOS tc
> WHERE tc.GRUPO_TAREFA IN ('PRODUÇÃO', 'NOC')
> AND DATEADD(ss, tc.DATA_FINAL_TAREFA - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND tc.COD_SOLUCAO_TAREFA IN ('TSR1','TSR2','TSR3')
> ),
> All_Solutions AS (
> SELECT COD_SOLUCAO
> FROM (VALUES ('TSR1'), ('TSR2'), ('TSR3')) AS T(COD_SOLUCAO)
> )
> SELECT
> A.COD_SOLUCAO AS priority,
> COUNT(CASE WHEN C.SLA_VIOLADO = 0 THEN 1 END) AS fulfilled,
> COUNT(C.COD_SOLUCAO) AS total,
> ISNULL(AVG(CASE WHEN C.SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END), 0) AS result
> 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;
### RG2PM - Mensal
$$
\frac{RotinasTSRx – RotinasTSRxEncerradosAtraso}{RotinasTSRx}
$$
- Tipo = Rotina
- Status = Fechada
- Grupo Solucionador = PRODUÇÃO e NOC
- Grupo de prioridades = TSR4, TSR5
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Bases usadas: CHAMADOS, TAREFASCHAMADOS
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
- Campos utilizados dentro da base `dbo.TAREFASCHAMADOS`:
- `ID`
- `SLA_VIOLADO`
- `COD_SOLUCAO_TAREFA`
- `DATA_FINAL_TAREFA`
- `GRUPO_TAREFA`
> sql
>``` *sql
> WITH CTE_Chamados AS (
> SELECT DISTINCT
> c.CHAMADO,
> NULL AS TASK,
> c.SLA_VIOLADO,
> c.COD_SOLUCAO
> FROM dbo.CHAMADOS c
> WHERE
> c.TIPO_CHAMADO = 'Rotina'
> AND c.STATUS = 'Fechada'
> AND c.GRUPO_SOLUCIONADOR IN ('PRODUÇÃO', 'NOC')
> AND DATEADD(ss, c.DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND c.COD_SOLUCAO IN ('TSR4', 'TSR5')
> UNION ALL
>
> SELECT DISTINCT
> NULL AS CHAMADO,
> tc.ID AS TASK,
> tc.SLA_VIOLADO,
> tc.COD_SOLUCAO_TAREFA AS COD_SOLUCAO
> FROM dbo.TAREFASCHAMADOS tc
> WHERE tc.GRUPO_TAREFA IN ('PRODUÇÃO', 'NOC')
> AND DATEADD(ss, tc.DATA_FINAL_TAREFA - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND tc.COD_SOLUCAO_TAREFA IN ('TSR4', 'TSR5')
> ),
> All_Solutions AS (
> SELECT COD_SOLUCAO
> FROM (VALUES ('TSR4'), ('TSR5')) AS T(COD_SOLUCAO)
> )
> SELECT
> A.COD_SOLUCAO AS priority,
> COUNT(CASE WHEN C.SLA_VIOLADO = 0 THEN 1 END) AS fulfilled,
> COUNT(C.COD_SOLUCAO) AS total,
> ISNULL(AVG(CASE WHEN C.SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END), 0) AS result
> 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;
## XGnDS
### IG1DS - Mensal
$$
\frac{IncidentesTSIx – IncidentesTSIxEncerradosAtraso}{IncidentesTSIx}
$$
- Tipo = Incidente
- Status = Fechada
- Grupo Solucionador = 'GEPIN AS Atendimento'
- Grupo de prioridades = TSI1, TSI2, TSI3, TSI4
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
- `DATA_ABERTURA`
- `SLA_ATENDIDO`
> sql
>``` *sql
> SELECT
> COUNT(CASE WHEN SLA_VIOLADO = 0 THEN 1 END) AS ATENDIDOS,
> COUNT(*) AS TOTAL,
> AVG(CASE WHEN SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END) AS IG1DS
>FROM (
> SELECT DISTINCT
> C.CHAMADO,
> C.SLA_VIOLADO,
> C.SLA_ATENDIDO,
> C.DATA_ABERTURA,
> C.DATA_SOLUCAO,
> C.COD_SOLUCAO
> FROM dbo.CHAMADOS AS C
> WHERE C.TIPO_CHAMADO = 'Incidente'
> AND C.STATUS = 'Fechada'
> AND C.GRUPO_SOLUCIONADOR = 'GEPIN AS Atendimento'
> AND DATEADD(ss, C.DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND C.COD_SOLUCAO IN ('TSI1', 'TSI2', 'TSI3', 'TSI4')
>) AS C;
### IG2DS - Mensal
$$
\frac{IncidentesTSIx – IncidentesTSIxEncerradosAtraso}{IncidentesTSIx}
$$
- Tipo = Incidente
- Status = Fechada
- Grupo Solucionador = 'GEPIN AS Atendimento'
- Grupo de prioridades = TSI5, TSI6, TSI7
- Encerrados com atraso = campo `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
- `DATA_ABERTURA`
- `SLA_ATENDIDO`
> sql
>``` *sql
> SELECT
> COUNT(CASE WHEN SLA_VIOLADO = 0 THEN 1 END) AS ATENDIDOS,
> COUNT(*) AS TOTAL,
> AVG(CASE WHEN SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END) AS IG2DS
>FROM (
> SELECT DISTINCT
> C.CHAMADO,
> C.SLA_VIOLADO,
> C.SLA_ATENDIDO,
> C.DATA_ABERTURA,
> C.DATA_SOLUCAO,
> C.COD_SOLUCAO
> FROM dbo.CHAMADOS AS C
> WHERE C.TIPO_CHAMADO = 'Incidente'
> AND C.STATUS = 'Fechada'
> AND C.GRUPO_SOLUCIONADOR = 'GEPIN AS Atendimento'
> AND DATEADD(ss, C.DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND C.COD_SOLUCAO IN ('TSI5', 'TSI6', 'TSI7')
>) AS C;
### 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 `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
- `DATA_ABERTURA`
- `SLA_ATENDIDO`
> sql
>``` *sql
> SELECT
> COUNT(CASE WHEN SLA_VIOLADO = 0 THEN 1 END) AS ATENDIDOS,
> COUNT(*) AS TOTAL,
> AVG(CASE WHEN SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END) AS SG1DS
>FROM (
> SELECT DISTINCT
> C.CHAMADO,
> C.SLA_VIOLADO,
> C.SLA_ATENDIDO,
> C.DATA_ABERTURA,
> C.DATA_SOLUCAO,
> C.COD_SOLUCAO
> FROM dbo.CHAMADOS AS C
> WHERE C.TIPO_CHAMADO = 'Solicitação'
> AND C.STATUS = 'Fechada'
> AND C.GRUPO_SOLUCIONADOR = 'GEPIN AS Atendimento'
> AND DATEADD(ss, C.DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND C.COD_SOLUCAO IN ('TSS1', 'TSS2', 'TSS3', 'TSS4')
>) AS C;
### SG2DS - Mensal
$$
\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 `SLA_VIOLADO = 1`
- Campos utilizados dentro da base `dbo.CHAMADOS`:
- `CHAMADO`
- `SLA_VIOLADO`
- `COD_SOLUCAO`
- `STATUS`
- `GRUPO_SOLUCIONADOR`
- `TIPO_CHAMADO`
- `DATA_SOLUCAO`
- `DATA_ABERTURA`
- `SLA_ATENDIDO`
> sql
>``` *sql
> SELECT
> COUNT(CASE WHEN SLA_VIOLADO = 0 THEN 1 END) AS ATENDIDOS,
> COUNT(*) AS TOTAL,
> AVG(CASE WHEN SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END) AS SG2DS
>FROM (
> SELECT DISTINCT
> C.CHAMADO,
> C.SLA_VIOLADO,
> C.SLA_ATENDIDO,
> C.DATA_ABERTURA,
> C.DATA_SOLUCAO,
> C.COD_SOLUCAO
> FROM dbo.CHAMADOS AS C
> WHERE C.TIPO_CHAMADO = 'Solicitação'
> AND C.STATUS = 'Fechada'
> AND C.GRUPO_SOLUCIONADOR = 'GEPIN AS Atendimento'
> AND DATEADD(ss, C.DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND C.COD_SOLUCAO IN ('TSS5', 'TSS6', 'TSS7', 'TSS8', 'TSS9', 'TSS10')
>) AS C;
## IRE - Mensal
$$
\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`
> sql
>``` *sql
> WITH CTE AS (
> SELECT
> CHAMADO_CICLO,
> MIN(ULT_MOD_CICLO) AS MIN_ULT_MOD_CICLO
> FROM dbo.ZCVCR
> WHERE 1=1
> AND GRUPO_CICLO = 'NOC'
> AND ATIVIDADE_CICLO = 'Atualizar status'
> AND STATUS_ANTERIOR_CICLO = 'Aberta'
> AND STATUS_ATUAL_CICLO = 'Em atendimento'
> GROUP BY CHAMADO_CICLO
>),
>CTE2 AS (
> SELECT
> C.CHAMADO,
> MIN(CTE.MIN_ULT_MOD_CICLO) - MIN(C.DATA_ABERTURA) AS TEMPO_ATE_ATENDIMENTO
> FROM dbo.CHAMADOS C
> INNER JOIN dbo.ZCVCR Z ON C.ID_CICLO = Z.ID_CICLO
> INNER JOIN CTE ON C.CHAMADO = CTE.CHAMADO_CICLO
> WHERE DATEADD(ss, C.DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND C.STATUS = 'Fechada'
> AND C.CATEGORIA LIKE '%Monitoramento%'
> AND C.TIPO_CHAMADO = 'Incidente'
> AND C.GRUPO_SOLUCIONADOR = 'NOC'
> GROUP BY C.CHAMADO
>)
>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
$$
\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`
> sql
>``` *sql
> SELECT
> COUNT(CASE WHEN SLA_VIOLADO = 0 THEN 1 END) AS ATENDIDOS,
> COUNT(*) AS TOTAL,
> AVG(CASE WHEN SLA_VIOLADO = 0 THEN 1.0 ELSE 0 END) AS CSE
>FROM (
> SELECT DISTINCT
> CHAMADO,
> SLA_VIOLADO
> FROM dbo.CHAMADOS
> WHERE DATEADD(ss, DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND STATUS = 'Fechada'
> AND GRUPO_SOLUCIONADOR = 'NOC'
> AND TIPO_CHAMADO IN ('Rotina','Solicitação', 'Incidente')
>) AS C;
## IGNC - Mensal - SQL ANTIGO
$$
\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
> WITH CTE AS (
> SELECT
> CHAMADO_CICLO,
> MIN(ULT_MOD_CICLO) AS MIN_ULT_MOD_CICLO
> FROM dbo.ZCVCR
> WHERE GRUPO_CICLO = 'N1_SERVICEDESK'
> AND ATIVIDADE_CICLO = 'Atualizar status'
> AND STATUS_ANTERIOR_CICLO = 'Aberta'
> AND STATUS_ATUAL_CICLO = 'Em atendimento'
> GROUP BY CHAMADO_CICLO
>),
>CTE2 AS (
> SELECT
> C.CHAMADO,
> SUM(Z.TEMPO_CICLO) AS TOTAL_TEMPO_CICLO,
> MAX(C.VIP) AS VIP
> FROM dbo.CHAMADOS C
> INNER JOIN dbo.ZCVCR Z ON C.ID_CICLO = Z.ID_CICLO
> LEFT JOIN CTE ON C.CHAMADO = CTE.CHAMADO_CICLO
> WHERE DATEADD(ss, C.DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND C.STATUS = 'Fechada'
> AND C.TIPO_CHAMADO IN ('Incidente', 'Solicitação')
> AND C.GRUPO_ATENDIMENTO = 'N1_SERVICEDESK'
> AND Z.ULT_MOD_CICLO <= CTE.MIN_ULT_MOD_CICLO
> GROUP BY C.CHAMADO
>)
>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;
## 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 ANTIGO
$$
\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
>``` *sql
> SELECT
> COUNT(CASE WHEN GRUPO_SOLUCIONADOR = 'N1_SERVICEDESK' THEN 1 END) AS fulfilled,
> COUNT(*) AS total,
> AVG(CASE WHEN GRUPO_SOLUCIONADOR = 'N1_SERVICEDESK' THEN 1.0 ELSE 0 END) AS result
> FROM (
> SELECT DISTINCT
> CHAMADO,
> GRUPO_SOLUCIONADOR
> FROM dbo.CHAMADOS
> WHERE DATEADD(ss, DATA_SOLUCAO - 10800, '19700101') BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
> AND STATUS = 'Fechada'
> AND TIPO_CHAMADO IN ('Incidente', 'Solicitação')
> AND CATEGORIA IN ('APLICAÇÕES E SERVIÇOS CORPORATIVOS.SISTEMAS CLIENTE-SERVIDOR.Erro.Falha Individual em Sistema VB', 'APLICAÇÕES E SERVIÇOS CORPORATIVOS.SISTEMAS WEB.Erro.Falha Individual em Sistema WEB', 'COLABORAÇÃO.OFFICE 365 (TEAMS, SHAREPOINT, E-MAIL).Erro.Erro na Autenticação Multifator do Office 365', 'COLABORAÇÃO.OFFICE 365 (TEAMS, SHAREPOINT, E-MAIL).Execução.Orientação ao usuário final', 'ESTAÇÃO DE TRABALHO.NOTEBOOK.Erro.Mau Funcionamento (Tela Azul, Lentidão, Travando, entre outros).', 'ESTAÇÃO DE TRABALHO.SISTEMA OPERACIONAL.Administração.Configuração de Sistema Operacional', 'ESTAÇÃO DE TRABALHO.SOFTWARE APLICATIVO.Erro.Mau Funcionamento do Aplicativo', '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', '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.EMPRÉSTIMO.Administração.Reserva de equipamentos para emprestimo', 'ESTAÇÃO DE TRABALHO.SOFTWARE APLICATIVO.Implementação.Instalação / Atualização / Configuração / Remoção de Aplicativo', 'SEGURANÇA DA INFORMAÇÃO.NAC (Controle de Acesso à Rede).SEGURANÇA.BLOQUEIO', 'SEGURANÇA DA INFORMAÇÃO.NAC (Controle de Acesso à Rede).SEGURANÇA.BLOQUEIO12', 'SUPORTE AO USUÁRIO.ORIENTAÇÕES GERAIS.Execução.Esclarecimentos Ao Usuário Final')
> ) AS C;
## SCN1 - Mensal - SQL NOVO
``` *sql
SELECT
COUNT(CASE WHEN GRUPO_SOLUCIONADOR = 'N1_SERVICEDESK' THEN 1 END) AS fulfilled,
COUNT(*) AS total,
AVG(CASE WHEN GRUPO_SOLUCIONADOR = 'N1_SERVICEDESK' THEN 1.0 ELSE 0 END) AS result
FROM (
SELECT DISTINCT
cr.ref_num as [CHAMADO],
grp.last_name as [GRUPO_SOLUCIONADOR]
FROM call_req cr
JOIN prob_ctg pcat ON pcat.persid = cr.category
JOIN ca_contact grp ON cr.group_id = grp.contact_uuid
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.type IN ('I', 'R')
AND grp.contact_type = 2308
AND pcat.sym IN ('APLICAÇÕES E SERVIÇOS CORPORATIVOS.SISTEMAS CLIENTE-SERVIDOR.Erro.Falha Individual em Sistema VB', 'APLICAÇÕES E SERVIÇOS CORPORATIVOS.SISTEMAS WEB.Erro.Falha Individual em Sistema WEB', 'COLABORAÇÃO.OFFICE 365 (TEAMS, SHAREPOINT, E-MAIL).Erro.Erro na Autenticação Multifator do Office 365', 'COLABORAÇÃO.OFFICE 365 (TEAMS, SHAREPOINT, E-MAIL).Execução.Orientação ao usuário final', 'ESTAÇÃO DE TRABALHO.NOTEBOOK.Erro.Mau Funcionamento (Tela Azul, Lentidão, Travando, entre outros).', 'ESTAÇÃO DE TRABALHO.SISTEMA OPERACIONAL.Administração.Configuração de Sistema Operacional', 'ESTAÇÃO DE TRABALHO.SOFTWARE APLICATIVO.Erro.Mau Funcionamento do Aplicativo', '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', '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.EMPRÉSTIMO.Administração.Reserva de equipamentos para emprestimo', 'ESTAÇÃO DE TRABALHO.SOFTWARE APLICATIVO.Implementação.Instalação / Atualização / Configuração / Remoção de Aplicativo', 'SEGURANÇA DA INFORMAÇÃO.NAC (Controle de Acesso à Rede).SEGURANÇA.BLOQUEIO', 'SEGURANÇA DA INFORMAÇÃO.NAC (Controle de Acesso à Rede).SEGURANÇA.BLOQUEIO12', 'SUPORTE AO USUÁRIO.ORIENTAÇÕES GERAIS.Execução.Esclarecimentos Ao Usuário Final')
) AS C;
```
## PSAU - Mensal - SQL NOVO
$$
\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`
## PSAU - Mensal - SQL NOVO
```sql
-- NOVO INDICADOR PSAU AJUSTADO
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) --UTILIZA CONTATOS DO TIPO GRUPO
AND grp.last_name != 'N2_CABEAMENTO' -- RETIRA O GRUPO 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'
--ORDER BY svya.last_mod_dt DESC
) 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;
```