適切なタイムスタンプ付きの user_stats

こんにちは、

Discourse の SQL データベースを持っています。特定のタイムスタンプでのユーザー統計を取得したいと考えています。
例えば、ユーザーが投稿した投稿数を調べたいです。
user_stats からデータを抽出すると、参加してから現在までの総数が取得できますが、特定の期間の数を特定したいのです。
何かアイデアはありますか?

統計は、新しいデータベースクエリを使用してご自身で生成する必要があります。例えば、過去30日間の投稿数を取得するには

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

このトピックには、出発点として活用できる多数のサンプルクエリが掲載されています。

「いいね!」 2

@david さん、ありがとうございます :slight_smile:

「いいね!」 1

しかし、日数ではなく、2020-2-2 00:00:00 から 2020-3-1 00:00:00 までのような正確な時間を指定したい場合はどうすればよいでしょうか?

SELECT count(*) from posts WHERE user_id=16 AND created_at > CURRENT_TIMESTAMP - INTERVAL '30 days'を実行すると数値が返ってきますが、統計情報を見るとその数値より少なくなっています。
もしご確認いただければ、データベースからは430が取得されましたが、実際には308です。
OnPaste.20200302-164643

UIに表示されるカウントは、公開され削除されていない投稿のみを対象としています。データベースのカウントには、削除された投稿、プライベートメッセージ、非公開カテゴリを含むすべての投稿が含まれます。

しかし、特定の期間内のその UI 統計を取得したい場合はどうすればよいでしょうか?

同様のフィルタを適用する必要があります。以下のようなものです:

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