User_stats con una marca de tiempo adecuada

Hola,

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:

2 Me gusta

Gracias @david :slight_smile:

1 me gusta

Pero, ¿qué pasa si quiero especificar una hora exacta en lugar de días, como por ejemplo, buscar entre 2020-2-2 00:00:00 y 2020-3-1 00:00:00?

Si ejecuto SELECT count(*) from posts WHERE user_id=16 AND created_at > CURRENT_TIMESTAMP - INTERVAL '30 days'

obtengo un número, pero al revisar mis estadísticas, el valor es menor. Si lo ves: obtuve 430 de la base de datos, pero en realidad son 308.
OnPaste.20200302-164643

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.

Pero, ¿qué pasa si quiero obtener ese estado de la interfaz dentro de un período de tiempo?

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
3 Me gusta