Guia de referência do relatório do painel do administrador

:bookmark: Este é um guia de referência para descrever como funcionam os Relatórios do Painel Administrativo, os dados que eles exibem, as consultas SQL correspondentes do Data Explorer e onde encontrar o código Ruby de cada relatório.

:person_raising_hand: Nível de usuário necessário: Staff

O Discourse contém vários Relatórios do Painel Administrativo integrados que podem ser úteis para explorar estatísticas sobre uma comunidade. Para acessar esses relatórios, você pode visitar discourse.example.com/admin/dashboard/reports no seu site (ou clicar no link Relatórios na barra lateral). Observe que apenas usuários staff terão acesso a esses relatórios.

Os dados de todos os usuários de um site estão incluídos nestes relatórios (incluindo a atividade de staff, como a visita a páginas administrativas). A única condição imposta aos usuários nos relatórios é que sejam usuários ‘reais’, o que é usado para excluir o usuário system dos relatórios.

Plugins também podem adicionar relatórios ao painel com add_report(name, &block).

:gem: Os modelos Ruby para a maioria dos relatórios estão localizados em: discourse/app/models/concerns/reports/. Alguns relatórios também fazem referência a: discourse/app/models/report.rb

:bulb: Os tópicos dashboard-sql contêm todas as consultas SQL correspondentes que podem ser usadas para gerar relatórios idênticos aos Relatórios do Painel Administrativo. Essas consultas podem ser usadas dentro do plugin Data Explorer e para Executar consultas do Data Explorer com a API do Discourse

:wrench: Para ocultar relatórios específicos do painel, use a configuração do site dashboard_hidden_reports.

Soluções Aceitas

Exibe a contagem diária de posts marcados como soluções.

Código Ruby: discourse-solved/plugin.rb at main · discourse/discourse-solved · GitHub

Consulta SQL: Dashboard Report - Accepted Solutions

Logins de Administradores

Lista de horários de login de administradores com localizações.

Código Ruby: discourse/app/models/concerns/reports/staff_logins.rb

Consulta SQL: Dashboard Report - Admin Logins

Anônimos

Número de novas visualizações de página por visitantes não conectados a uma conta.

Código Ruby: discourse/app/models/concerns/reports/consolidated_page_views.rb

Consulta SQL: Dashboard Report - Anonymous

Favoritos

Número de novos tópicos e posts marcados como favoritos.

Código Ruby: discourse/app/models/concerns/reports/bookmarks.rb

Consulta SQL: Dashboard Report - Bookmarks

Requisições de API Consolidadas

Estatísticas de uso da API por data, rastreando tanto requisições de API regulares quanto requisições de API de usuários.

Código Ruby: discourse/app/models/concerns/reports/consolidated_api_requests.rb at main · discourse/discourse · GitHub

Consulta SQL: Dashboard Report - Consolidated API Requests

Visualizações de Página Consolidadas

Visualizações de página para usuários conectados, usuários anônimos e rastreadores. Este é um relatório legado substituído pelo relatório Tráfego do Site.

Código Ruby: discourse/app/models/concerns/reports/consolidated_page_views.rb

Consulta SQL: Dashboard Report - Consolidated Pageviews

Visualizações de Página Consolidadas com Detecção de Navegador (Descontinuado)

Visualizações de página para usuários conectados, usuários anônimos, rastreadores conhecidos e outros. Este relatório está descontinuado e agora delega para o relatório Tráfego do Site.

Código Ruby: discourse/app/models/concerns/reports/consolidated_page_views_browser_detection.rb

Consulta SQL: Dashboard Report - Consolidated Pageviews with Browser Detection

DAU/MAU

Número de membros que fizeram login no último dia dividido pelo número de membros que fizeram login no último mês – retorna uma % que indica a ‘retenção’ da comunidade. O objetivo é ser >20%.

Código Ruby: discourse/app/models/concerns/reports/dau_by_mau.rb

Consulta SQL: Dashboard Report - DAU/MAU

Usuários Engajados Diariamente

Número de usuários que curtiram ou publicaram no último dia.

Código Ruby: discourse/app/models/concerns/reports/daily_engaged_users.rb

Consulta SQL: Dashboard Report - Daily Engaged Users

E-mails Enviados

Número de novos e-mails enviados.

Código Ruby: discourse/app/models/concerns/reports/emails.rb

Consulta SQL: Dashboard Report - Emails Sent

Bandeiras

Número de novas bandeiras.

Código Ruby: discourse/app/models/concerns/reports/flags.rb

Consulta SQL: Dashboard Report - Flags

Status das Bandeiras

Lista de status das bandeiras, incluindo o tipo de bandeira, o autor, quem reportou e o tempo até a resolução.

Código Ruby: discourse/app/models/concerns/reports/flags_status.rb

Consulta SQL: Dashboard Report - Flags Status

Curtidas

Número de novas curtidas.

Código Ruby: discourse/app/models/concerns/reports/likes.rb

Consulta SQL: Dashboard Report - Likes

Conectados

Número de novas visualizações de página de usuários conectados.

Código Ruby: discourse/app/controllers/admin/reports_controller.rb#L5

Consulta SQL: Dashboard Report - Logged In

Atividade de Moderadores

Lista de atividades de moderadores, incluindo bandeiras revisadas, tempo de leitura, tópicos criados, posts criados, mensagens pessoais criadas e revisões.

Consulta SQL: Dashboard Report - Moderator Activity

Advertência de Moderador

Número de advertências enviadas por mensagens pessoais de moderadores.

Código Ruby: discourse/app/models/concerns/reports/moderator_warning_private_messages.rb

Consulta SQL: Dashboard Report - Moderator Warnings

Novos Contribuidores

Número de usuários que fizeram seu primeiro post durante este período.

Código Ruby: discourse/app/models/concerns/reports/new_contributors.rb

Consulta SQL: Dashboard Report - New Contributors

Notificar Moderadores

Número de vezes que moderadores foram notificados privadamente por uma bandeira.

Código Ruby: discourse/app/models/concerns/reports/notify_moderators_private_messages.rb

Consulta SQL: Dashboard Report - Notify Moderators

Notificar Usuário

Número de vezes que usuários foram notificados privadamente por uma bandeira.

Código Ruby: discourse/app/models/concerns/reports/notify_user_private_messages.rb

Consulta SQL: Dashboard Report - Notify User

Sentimento Geral

Número de posts classificados como positivos ou negativos pela IA “Sentiment”, em um período especificado.

Código Ruby: https://github.com/discourse/discourse-ai/blob/main/lib/sentiment/entry_point.rb

Consulta SQL: Dashboard Report - Overall Sentiment

Visualizações de Página

Número de novas visualizações de página de todos os visitantes. Igual ao total de Visualizações de Página Consolidadas.

O Discourse usa a seguinte consulta para determinar o total de visualizações de página:

Consulta SQL: Dashboard Report - Consolidated Pageviews

Edições de Posts

Número de novas edições de posts.

Código Ruby: discourse/app/models/concerns/reports/post_edits.rb

Consulta SQL: Dashboard Report - Post Edits

Posts

Novos posts criados durante o período de tempo selecionado

Código Ruby: discourse/app/models/concerns/reports/posts.rb

Consulta SQL: Dashboard Report - Posts

Emoção do Post

Número de posts classificados pela IA com uma das seguintes emoções: Tristeza, Surpresa, Medo, Raiva, Alegria, Nojo - agrupado por nível de confiança do autor, em um período especificado.

Código Ruby: https://github.com/discourse/discourse-ai/blob/main/lib/sentiment/entry_point.rb

Consulta SQL: Dashboard Report - Post Emotion

Reações

Lista das reações mais recentes.

Código Ruby: discourse-reactions/plugin.rb at main · discourse/discourse-reactions · GitHub

Consulta SQL: Dashboard Report - Reactions

Cadastros

Novos registros de conta para este período.

Código Ruby: discourse/app/models/concerns/reports/signups.rb

Consulta SQL: Dashboard Report - Signups

Tráfego do Site

Visualizações de página para navegadores conectados, navegadores anônimos, rastreadores e outros tráfegos. Este é o relatório principal de tráfego, substituindo os relatórios legados de Visualizações de Página Consolidadas.

Código Ruby: discourse/app/models/concerns/reports/site_traffic.rb

Consulta SQL: Dashboard Report - Site Traffic

Logins Suspeitos

Detalhes de novos logins que diferem suspeitamente de logins anteriores.

Código Ruby: discourse/app/models/concerns/reports/suspicious_logins.rb

Consulta SQL: Dashboard Report - Suspicious Logins

Sistema

Número de mensagens pessoais enviadas automaticamente pelo Sistema.

Código Ruby: discourse/app/models/concerns/reports/system_private_messages.rb

Consulta SQL: Dashboard Report - System

Tempo até a primeira resposta

Tempo médio (em horas) da primeira resposta a novos tópicos.

Código Ruby: discourse/app/models/concerns/reports/time_to_first_response.rb + discourse/discourse/blob/main/app/models/topic.rb#L1799-L1844

Consulta SQL: Dashboard Report - Time to First Response

Top Usuários Ignorados / Silenciados

Usuários que foram silenciados e/ou ignorados por muitos outros usuários.

Código Ruby: discourse/app/models/concerns/reports/top_ignored_users.rb

Consulta SQL: Dashboard Report - Top Ignored / Muted Users

Top Tópicos Referenciados

Tópicos que receberam o maior número de cliques de fontes externas.

Código Ruby: discourse/app/models/concerns/reports/top_referred_topics.rb

Consulta SQL: Dashboard Report - Top Referred Topics

Top Referenciadores

Usuários listados pelo número de cliques nos links que compartilharam.

Código Ruby: discourse/app/models/concerns/reports/top_referrers.rb

Consulta SQL: Dashboard Report - Top Referrers

Top Fontes de Tráfego

Fontes externas que mais vincularam para este site.

Código Ruby: discourse/app/models/concerns/reports/top_traffic_sources.rb

Consulta SQL: Dashboard Report - Top Traffic Sources

Top Uploads

Lista todos os uploads por extensão, tamanho do arquivo e autor.

Código Ruby: discourse/app/models/concerns/reports/top_uploads.rb

Consulta SQL: Dashboard Report - Top Uploads

Top Usuários por Curtidas Recebidas

Top 10 usuários que receberam curtidas.

Código Ruby: discourse/app/models/concerns/reports/top_users_by_likes_received.rb

Consulta SQL: Dashboard Report - Top Users by Likes Received

Top Usuários por Curtidas Recebidas de um usuário com nível de confiança mais baixo

Top 10 usuários em um nível de confiança mais alto sendo curtidos por pessoas em um nível de confiança mais baixo.

Código Ruby: discourse/app/models/concerns/reports/top_users_by_likes_received_from_inferior_trust_level.rb

Consulta SQL: Dashboard Report - Top Users by Likes Received from a User with a Lower Trust Level

Top Usuários por Curtidas Recebidas de uma variedade de pessoas

Top 10 usuários que tiveram curtidas de uma ampla gama de pessoas.

Código Ruby: discourse/app/models/concerns/reports/top_users_by_likes_received_from_a_variety_of_people.rb

Consulta SQL: Dashboard Report - Top Users by Likes Received From a Variety of People

Tópicos

Novos tópicos criados durante este período.

Código Ruby: discourse/app/models/concerns/reports/topics.rb

Consulta SQL: Dashboard Report - Topics

Tópicos sem resposta

Número de novos tópicos criados que não receberam uma resposta.

Código Ruby: discourse/app/models/concerns/reports/topics_with_no_response.rb

Consulta SQL: Dashboard Report - Topics with No Response

Estatísticas de Visualização de Tópicos

Top 100 tópicos por visualizações, com divisão entre anônimos e conectados, filtrável por categoria.

Código Ruby: discourse/app/models/concerns/reports/topic_view_stats.rb

Consulta SQL: Dashboard Report - Topic View Stats

Termos de Busca em Alta

Termos de busca mais populares com suas taxas de cliques.

Código Ruby: discourse/app/models/concerns/reports/trending_search.rb

Consulta SQL: Dashboard Report - Trending Search Terms

Crescimento de Nível de Confiança

Número de usuários que aumentaram seu Nível de Confiança durante este período.

O relatório de Crescimento de Nível de Confiança está obtendo dados da tabela user_histories no banco de dados do Discourse. Especificamente, este relatório está contando o número de vezes que uma user_histories.action é registrada para um aumento no nível de confiança de um usuário.

Código Ruby: discourse/app/models/concerns/reports/trust_level_growth.rb

Consulta SQL: Dashboard Report - Trust Level Growth

Políticas não aceitas

Este relatório do painel identifica tópicos com políticas que não foram aceitas por certos usuários.

Código Ruby: discourse-policy/plugin.rb at main · discourse/discourse-policy · GitHub

Consulta SQL: Dashboard Report - Unaccepted Policies

Razão de Reporte de Usuários

Lista de usuários ordenada pela razão de resposta de staff às suas bandeiras (discordância para concordância).

Código Ruby: discourse/app/models/concerns/reports/user_flagging_ratio.rb

Consulta SQL: Dashboard Report - User Flagging Ratio

Notas de Usuário

Lista das notas de usuário mais recentes.

Código Ruby: discourse-user-notes/plugin.rb at main · discourse/discourse-user-notes · GitHub

Consulta SQL: Dashboard Report - User Notes

Visualizações de Perfil de Usuário

Total de novas visualizações de perfis de usuários.

Código Ruby: discourse/app/models/concerns/reports/profile_views.rb

Consulta SQL: Dashboard Report - User Profile Views

Visitas de Usuários

O número total de visitas de usuários conectados no fórum para o período de tempo selecionado (hoje, ontem, últimos 7 dias, etc).

Uma Visita de Usuário é contada sempre que um usuário único conectado visita o site, até uma vez por dia. Por exemplo, se um usuário visitou um site todos os dias dentro de uma semana, o Discourse contaria isso como 7 visitas de usuário.

Código Ruby: discourse/app/models/concerns/reports/visits.rb

Consulta SQL: Dashboard Report - User Visits

Visitas de Usuários (mobile)

Número de usuários únicos conectados que visitaram usando um dispositivo móvel.

Código Ruby: discourse/app/models/concerns/reports/mobile_visits.rb

Consulta SQL: Dashboard Report - User Visits

Usuário-para-Usuário (excluindo respostas)

Número de mensagens pessoais iniciadas.

Código Ruby: discourse/app/models/concerns/reports/user_to_user_private_messages.rb

Consulta SQL: Dashboard Report - User-to-User

Usuário-para-Usuário (com respostas)

Número de todas as novas mensagens pessoais e respostas.

Código Ruby: discourse/app/models/concerns/reports/user_to_user_private_messages_with_replies.rb

Consulta SQL: Dashboard Report - User-to-User

Usuários por Nível de Confiança

Número de usuários agrupados por nível de confiança.

Código Ruby: discourse/app/models/concerns/reports/users_by_trust_level.rb

Consulta SQL: Dashboard Report - Users Per Trust Level

Usuários por Tipo

Número de usuários agrupados por administrador, moderador, suspenso e silenciado.

Código Ruby: discourse/app/models/concerns/reports/users_by_type.rb

Consulta SQL: Dashboard Report - Users Per Type

Visualizações de Página de Rastreadores Web

Total de visualizações de página de rastreadores web ao longo do tempo.

Código Ruby: discourse/app/models/report.rb

Consulta SQL: Dashboard Report - Web Crawler Pageviews

Agentes de Usuário de Rastreadores Web

Lista de agentes de usuário de rastreadores web, ordenados por visualizações de página.

Código Ruby: discourse/app/models/concerns/reports/web_crawlers.rb

Consulta SQL: Dashboard Report - Web Crawler User Agents

18 curtidas

Não vejo um link para isso em /admin. Estou deixando de ler? Pareceria que isso deveria ser mais fácil de descobrir. Acho que eu sabia que esses relatórios estavam aqui, mas procurei e não consegui encontrá-los.

Embora tenha levado apenas alguns minutos para encontrar, pode ser bom adicionar algo como

3 curtidas

Sim, seria bom em uma mensagem privada para a equipe mencionar eles quando um site é criado pela primeira vez. :thinking:

1 curtida

:crying_cat_face:

Desculpe. Eu achava que já tinha visto isso em algum lugar antes.

Você simplesmente não consegue fazer as pessoas lerem as coisas. . . . Exceto que eu poderia ler o código-fonte para descobrir como fazer isso em um plugin?

Mas talvez atualizar o acima para

Acho que foi isso que realmente me confundiu. (Mas não, não tenho desculpa.)

Eu fiz o tópico ser um wiki, vá em frente! :+1:

2 curtidas

Isso não corresponde à interface do usuário (a interface do usuário usa 20%), qual deles deve ser?

2 curtidas

Boa observação. Foi atualizado recentemente para 20%. Farei a alteração no OP. :slight_smile: :+1:

2 curtidas

Olá @SaraDev Este resultado do relatório pode ser obtido com uma consulta SQL? Você pode compartilhá-la?
Obrigado

1 curtida

Sim, você pode usar o seguinte relatório SQL para Principais Fontes de Tráfego:

-- [params]
-- date :start_date = 01/05/2023
-- date :end_date = 03/06/2023

WITH count_links AS (

SELECT COUNT(*) AS clicks,
       ind.name AS domain
FROM incoming_links il
  INNER JOIN posts p ON p.deleted_at ISNULL AND p.id = il.post_id
  INNER JOIN topics t ON t.deleted_at ISNULL AND t.id = p.topic_id
  INNER JOIN incoming_referers ir ON ir.id = il.incoming_referer_id
  INNER JOIN incoming_domains ind ON ind.id = ir.incoming_domain_id
WHERE t.archetype = 'regular'
  AND il.created_at::date BETWEEN :start_date AND :end_date
GROUP BY ind.name
ORDER BY clicks DESC
),

count_topics AS (

SELECT COUNT(DISTINCT p.topic_id) AS topics,
       ind.name AS domain
FROM incoming_links il
INNER JOIN posts p ON p.deleted_at ISNULL AND p.id = il.post_id
INNER JOIN topics t ON t.deleted_at ISNULL AND t.id = p.topic_id
INNER JOIN incoming_referers ir ON ir.id = il.incoming_referer_id
INNER JOIN incoming_domains ind ON ind.id = ir.incoming_domain_id
WHERE t.archetype = 'regular'
  AND il.created_at > (CURRENT_TIMESTAMP - INTERVAL '30 DAYS')
GROUP BY ind.name
)

SELECT cl.domain,
       cl.clicks AS "Clicks",
       ct.topics AS "Topics"
FROM count_links cl
JOIN count_topics ct ON cl.domain = ct.domain
LIMIT 10

Com esta consulta, observe que os parâmetros de data aceitam datas no formato dia/mês/ano.

1 curtida

Olá @SaraDev, obrigado por compartilhar a consulta.
Uma pergunta mais geral sobre este relatório e a tabela incoming_links na verdade - ela representa apenas o tráfego para páginas de posts e não o tráfego para todas as páginas do fórum, certo?

Contexto: Estou procurando analisar as tendências do tráfego geral do fórum e esperava obter o tráfego geral por fontes do relatório Principais Fontes de Tráfego.
Mas enquanto o tráfego geral é de ~ 272 mil no último mês (usuários e anônimos), os cliques totais no relatório de fontes de tráfego para o mesmo período são de apenas 59 mil.
Além disso, vejo que você usa inner join com as tabelas topics e posts, o que significa que se não houver post_id associado ao clique, você não o conta.

Você pode confirmar minha conclusão e talvez explicar um pouco sobre a lógica por trás da tabela incoming_links?

Olá @SaraDev, executei esta consulta e o resultado não corresponde exatamente ao relatório de Posts na guia geral.
Por exemplo, para 30 de novembro:
Consulta = 112 posts
Relatório = 120 posts
Você pode verificar a diferença?
Obrigado

1 curtida

Apenas um aviso para você, @Yotam_Hagay - mesmo que a Sara seja a OP, o guia é responsabilidade de todos :slight_smile: :discourse: Não há necessidade de uma @menção em cada postagem. :slight_smile:

2 curtidas

Obrigado @JammyDodger por esclarecer.
Há mais alguém que eu possa marcar ou recorrer para obter uma resposta?

1 curtida

Os resultados desta consulta são ligeiramente diferentes do relatório “Tempo de resposta para a primeira resposta”:
Em 8 de novembro, por exemplo:
Consulta: 93 Horas
Relatório: 116 Horas
Alguém pode me ajudar?

1 curtida

Acho que alguns deles podem levar algum tempo para pesquisar. Estou investigando por conta própria para ver se consigo entender o que está acontecendo (embora a lacuna entre minhas habilidades em SQL e minhas habilidades em Ruby seja bem grande :slight_smile:).

Mas continue enviando as descobertas, pois seria ótimo consolidar todas essas informações. :+1:

2 curtidas

Para o de Posts, acho que o relatório de estoque também está contando posts de tópicos, bem como os de usuários do sistema, mas também visando apenas aqueles com post_type 1 (ou seja, não sussurros, posts de pequenas ações ou ações de moderador).

Acho que o SQL ficaria mais assim:

--[params]
-- date :start_date
-- date :end_date

SELECT 
    p.created_at::date AS "Dia",
    COUNT(p.id) AS "Contagem"
FROM posts p
INNER JOIN topics t ON t.id = p.topic_id AND t.deleted_at ISNULL
WHERE p.created_at::date BETWEEN :start_date AND :end_date
    AND p.deleted_at ISNULL
    AND t.archetype = 'regular'
    AND p.post_type = 1
GROUP BY p.created_at::date
ORDER BY 1

Você poderia executar isso no seu site e ver se corresponde?

2 curtidas

Obrigado Jammy, vou verificar!
Estou trabalhando em uma análise de Tempo de Primeira Resposta, então agradeceria se você pudesse dar uma olhada nesta também.

1 curtida

Ao analisar a versão SQL, acho que está faltando o AND p.user_id <> t.user_id para excluir respostas do OP. Se eu adicionar isso, ele me dá o tempo preciso entre o OP e a primeira resposta de outra pessoa:

--[params]
-- date :date_start
-- date :date_end

WITH first_reply AS (
    SELECT 
        p.topic_id, 
        MIN(post_number) post_number, 
        t.created_at
    FROM posts p
    INNER JOIN topics t ON (p.topic_id = t.id)
    WHERE p.deleted_at IS NULL
        AND p.user_id <> t.user_id
        AND p.post_number != 1
        AND p.post_type = 1
        AND p.user_id > 0
        AND t.user_id > 0
        AND t.deleted_at IS NULL
        AND t.archetype = 'regular'
        AND t.created_at::date BETWEEN :date_start AND :date_end
    GROUP BY p.topic_id, t.created_at
    ORDER BY 2 DESC
)

SELECT 
    p.topic_id, 
    fr.created_at::date dt_topic_created,
    (p.created_at - fr.created_at) response_time
FROM posts p
INNER JOIN first_reply fr 
    ON fr.topic_id = p.topic_id 
    AND fr.post_number = p.post_number
    AND p.created_at > fr.created_at
ORDER BY response_time

Também acho que o relatório de estoque está em decimal em vez de horas e minutos como o SQL. Vou tentar novamente para que corresponda. :+1:


Apenas uma pequena atualização para incluir o AVG para que seja mais semelhante à saída do relatório de estoque:

--[params]
-- date :date_start
-- date :date_end

WITH first_reply AS (
    SELECT 
        p.topic_id, 
        MIN(post_number) post_number, 
        t.created_at
    FROM posts p
    INNER JOIN topics t ON p.topic_id = t.id
    WHERE p.deleted_at IS NULL
        AND p.user_id <> t.user_id
        AND p.post_type = 1
        AND p.user_id > 0
        AND t.user_id > 0
        AND t.deleted_at IS NULL
        AND t.archetype = 'regular'
        AND t.created_at::date BETWEEN :date_start AND :date_end
    GROUP BY p.topic_id, t.created_at
)

SELECT 
    fr.created_at::date dt_topic_created,
    AVG(p.created_at - fr.created_at) response_time
FROM posts p
INNER JOIN first_reply fr 
    ON fr.topic_id = p.topic_id 
    AND fr.post_number = p.post_number
    AND p.created_at > fr.created_at
GROUP BY fr.created_at::date
ORDER BY response_time

Isso parece corresponder ao relatório de estoque, desde que você leve em consideração que um está em decimal e o outro em HH:MM. Tenho certeza de que há uma maneira de converter o response_time do SQL para decimal, mas o HH:MM parece uma maneira mais intuitiva de fazer isso. (Acho que também há alguns critérios extras que podem não ser necessários, mas também podem ser uma proteção contra circunstâncias incomuns, então, em última análise, deixei essas partes como estão até que eu possa dizer com certeza uma coisa ou outra :slight_smile:)

Você poderia executar este e ver como ele se compara?

4 curtidas

Sim, agora soma os números mostrados no relatório de estoque, obrigado!
Apenas um comentário -
Descobri que a função AVG abaixo retorna resultados ausentes caso o tempo seja > 24h (uma seção de # de dias está faltando, eu acho).

AVG(p.created_at - fr.created_at)::time response_time

1 curtida

Ah sim, converter para time foi uma má escolha. :slight_smile: Se você remover o ::time, ele voltará à versão mais precisa (embora mais difícil de ler).

Também editarei a de cima. :+1:

2 curtidas