User_stats con un timestamp corretto

Ehi,

Ho un database SQL di Discourse. Devo trovare le statistiche degli utenti per un determinato timestamp.
Ad esempio: devo scoprire quanti post ha pubblicato un utente?
Se estraggo quei dati da user_stats, ottengo un numero che va dall’iscrizione al forum fino a ora, ma ho bisogno di trovare i dati per un periodo specifico.
Hai qualche idea?

Dovrai generare le statistiche tu stesso utilizzando una nuova query al database. Ad esempio, per ottenere il numero di post degli ultimi 30 giorni

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

Questo argomento contiene molte query di esempio che puoi utilizzare come punto di partenza

Grazie @david :slight_smile:

Ma cosa succede se voglio specificare un orario preciso invece che solo i giorni, ad esempio se voglio cercare tra il 2020-2-2 00:00:00 e il 2020-3-1 00:00:00?

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

ottengo un numero, ma quando controllo le mie statistiche il valore è inferiore.
Se vedi questo: ho ottenuto 430 dal database, ma in realtà sono 308?
OnPaste.20200302-164643

Il conteggio visualizzato nell’interfaccia si riferisce solo ai post pubblici e non cancellati. Il conteggio nel database include tutti i post, compresi quelli cancellati, i messaggi privati e le categorie private.

Ma cosa succede se voglio ottenere quella statistica dell’interfaccia utente in un determinato periodo di tempo?

Dovrai applicare filtri simili. Qualcosa del genere:

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