# Tempos Médios de Resposta da Equipe aos Tópicos

**URL:** <https://meta.discourse.org/t/average-staff-response-times-to-topics/306528>\
**Category:** Data & reporting\
**Tags:** sql-query\
**Created:** [Maio 2, 2024, 8:03pm UTC](https://meta.discourse.org/t/average-staff-response-times-to-topics/306528 "2024-05-02T20:03:12Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![SaraDev](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saradev/32/335139_2.png) [@SaraDev](https://meta.discourse.org/u/SaraDev)\
**Post date:** [Maio 2, 2024, 8:03pm UTC](https://meta.discourse.org/t/average-staff-response-times-to-topics/306528/1 "2024-05-02T20:03:12Z")

</div>

Este relatório do Explorador de Dados foi projetado para analisar os tempos médios de resposta dos membros da equipe (administradores e moderadores) aos tópicos criados dentro de um intervalo de datas e categoria especificados.

Este relatório pode ajudar a entender a eficiência e a capacidade de resposta das interações da equipe em um site Discourse, o que pode ser crucial para o gerenciamento da comunidade.

```sql
-- [params]
-- date :start_date = 2024-01-01
-- date :end_date = 2024-01-30
-- int_list :categories = 0
-- boolean :include_subcategories = false

WITH filtered_topics AS (
    SELECT t.id AS topic_id, t.category_id, t.created_at::DATE AS created_at
    FROM topics t
    WHERE
      (
        ':categories' = '0'
        OR t.category_id IN
          (
            SELECT id
            FROM categories
            WHERE id IN(:categories)
              OR (:include_subcategories AND parent_category_id IN(:categories))
          )
      )
      AND t.created_at >= :start_date
      AND t.created_at < :end_date
      AND t.archetype = 'regular'
      AND t.deleted_at IS NULL
),
staff_replies AS (
    SELECT p.topic_id, MIN(p.created_at) AS first_staff_reply
    FROM posts p
    JOIN users u ON p.user_id = u.id
    WHERE (u.admin = true OR u.moderator = true)
      AND p.deleted_at IS NULL
      AND p.post_type = 1
    GROUP BY p.topic_id
),
response_times AS (
    SELECT
        ft.topic_id,
        ft.created_at AS topic_created_at,
        sr.first_staff_reply,
        ft.category_id as category_id,
        EXTRACT(EPOCH FROM (sr.first_staff_reply - ft.created_at)) / 3600 AS response_time_hours
    FROM filtered_topics ft
    LEFT JOIN staff_replies sr ON ft.topic_id = sr.topic_id
)
SELECT
    topic_id,
    category_id,
    topic_created_at,
    response_time_hours as staff_response_time_hours
FROM response_times
ORDER BY topic_created_at ASC

```

### Explicação da Consulta SQL

O relatório usa várias Expressões de Tabela Comuns (CTEs) para detalhar a consulta:

- `filtered_topics`: Esta CTE filtra os tópicos com base nos parâmetros de entrada, como intervalo de datas, categoria e se deve incluir subcategorias. Ela garante que apenas tópicos não excluídos e do arquétipo regular sejam considerados.
- `staff_replies`: Esta CTE identifica a primeira resposta feita por um membro da equipe (administrador ou moderador) aos tópicos identificados na CTE `filtered_topics`. Ela filtra posts excluídos e considera apenas os posts principais (post\_type = 1).
- `response_times`: Esta CTE calcula o tempo de resposta encontrando a diferença entre o tempo de criação do tópico e o tempo da primeira resposta da equipe. O resultado é convertido de segundos para horas.

A instrução SELECT final da CTE `response_times` busca o ID do tópico, o ID da categoria, a data de criação do tópico e o tempo de resposta da equipe calculado em horas, ordenando os resultados pela data de criação do tópico.

### Parâmetros

- `start_date` (date): A data de início do período para o qual analisar a criação de tópicos.
- `end_date` (date): A data de término do período para o qual analisar a criação de tópicos.
- `categories` (int\_list): Uma lista de IDs de categoria para filtrar os tópicos. Se definido como 0, todas as categorias são incluídas.
- `include_subcategories` (boolean): Um sinalizador para determinar se as subcategorias das categorias especificadas devem ser incluídas na análise.

### Resultados

- `topic_id`: O identificador exclusivo do tópico.
- `category_id`: A categoria à qual o tópico pertence.
- `topic_created_at`: A data em que o tópico foi criado.
- `staff_response_time_hours`: O tempo que a equipe levou para responder ao tópico em horas. Um valor NULL indica que não houve resposta da equipe ao tópico.

### Exemplo de Resultados

| topic\_id | category\_id | topic\_created\_at | staff\_response\_time\_hours |
| --- | --- | --- | --- |
| 101 | 5 | 2024-01-02 | 1.5 |
| 102 | 5 | 2024-01-02 | 3.2 |
| 103 | 12 | 2024-01-03 | NULL |
| 104 | 12 | 2024-01-04 | 0.75 |

---

_[View the full topic](https://meta.discourse.org/t/average-staff-response-times-to-topics/306528)._
