---
# System prepended metadata

title: SEFAZ

---

# 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;
 ```
 