User_stats avec un horodatage approprié

Bonjour,

J’ai une base de données SQL Discourse. Je dois trouver les statistiques d’un utilisateur pour un horodatage spécifique.
Par exemple, je dois déterminer combien de publications un utilisateur a faites.
Si j’extrais ces données de user_stats, cela me donnera un nombre depuis son inscription sur le forum jusqu’à présent, mais je dois obtenir cela pour une période spécifique.
Une idée ?

Vous devrez générer les statistiques vous-même en exécutant une nouvelle requête de base de données. Par exemple, pour obtenir le nombre de publications au cours des 30 derniers jours

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

Ce sujet contient de nombreuses requêtes d’exemple que vous pouvez utiliser comme point de départ

Merci @david :slight_smile:

Mais que se passe-t-il si je veux fournir une heure précise plutôt que des jours, par exemple si je veux chercher entre 2020-02-02 00:00:00 et 2020-03-01 00:00:00 ?

Si j’exécute SELECT count(*) from posts WHERE user_id=16 AND created_at > CURRENT_TIMESTAMP - INTERVAL '30 days'

Je reçois un nombre, mais quand je consulte mes statistiques, il est inférieur à ce nombre.
Si vous voyez cela : j’obtiens 430 depuis la base de données, mais en réalité c’est 308 ?
OnPaste.20200302-164643

Le nombre affiché dans l’interface ne concerne que les publications publiques et non supprimées. Le nombre dans la base de données inclut tous les messages, y compris les messages supprimés, les messages privés et les catégories privées.

Mais que se passe-t-il si je souhaite obtenir cette statistique d’interface utilisateur sur une période donnée ?

Vous devrez appliquer des filtres similaires. Quelque chose comme ceci :

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