Tengo una base de datos SQL de Discourse. Necesito encontrar estadísticas de usuarios para una marca de tiempo específica.
Por ejemplo, necesito saber cuántos publicaciones hizo un usuario.
Si extraigo esos datos de user_stats, obtendré un número desde que se unió al foro hasta ahora, pero necesito encontrarlo para un período de tiempo específico.
¿Alguna idea?
Deberás generar las estadísticas tú mismo mediante una nueva consulta a la base de datos. Por ejemplo, para obtener el recuento de publicaciones de los últimos 30 días:
SELECT count(*) from posts
WHERE user_id=1
AND created_at > CURRENT_TIMESTAMP - INTERVAL '30 days'
Este tema contiene muchas consultas de ejemplo que puedes utilizar como punto de partida:
El recuento mostrado en la interfaz de usuario solo incluye publicaciones públicas y no eliminadas. El recuento de la base de datos incluye todas las publicaciones, incluso las eliminadas, los mensajes privados y las categorías privadas.
Necesitarás aplicar filtros similares. Algo como esto:
SELECT count(*) FROM posts p
JOIN topics t ON t.id = p.topic_id
WHERE p.user_id=23968
AND p.deleted_at IS NULL
AND NOT COALESCE(p.hidden, 't')
AND p.post_type = 1
AND t.deleted_at IS NULL
AND COALESCE(t.visible, 't')
AND t.archetype <> 'private_message'
AND p.user_id > 0
AND p.post_number > 1