# 適切なタイムスタンプ付きの user\_stats

**URL:** https://meta.discourse.org/t/user-stats-with-a-proper-time-stamp/143066
**Category:** Data & reporting
**Tags:** sql-query
**Created:** [2020 年 3 月 2 日午前 11:00 UTC](https://meta.discourse.org/t/user-stats-with-a-proper-time-stamp/143066 "2020-03-02T11:00:51Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![Gaurav\_Sardana](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gaurav_sardana/32/171499_2.png) [@Gaurav\_Sardana](https://meta.discourse.org/u/Gaurav_Sardana)
#### Post date: [2020 年 3 月 2 日午前 11:00 UTC](https://meta.discourse.org/t/user-stats-with-a-proper-time-stamp/143066/1 "2020-03-02T11:00:51Z")

</div>

こんにちは、

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

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [2020 年 3 月 2 日午前 11:10 UTC](https://meta.discourse.org/t/user-stats-with-a-proper-time-stamp/143066/2 "2020-03-02T11:10:00Z")

</div>

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

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

```

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

> [@(Superseded) What cool data explorer queries have you come up with?](https://meta.discourse.org/t/what-cool-data-explorer-queries-have-you-come-up-with/43516?u=david):
>
> This topic became too long to be easily searched and has been broken down into separate topics. If you have any questions about how to write a [Data Explorer](https://meta.discourse.org/t/32566?silent=true) query, or have one to share, please start a new topic in the #Data & reporting category and tag it with the #sql-query tag. +1information_source For an alternative searchable list of queries that were in this topic, see @SidV’s [query list on GitHub](https://github.com/SidVal/discourse-data-explorer/blob/queries/querys.md).

---

<div class="post-metadata">

### Author: ![Gaurav\_Sardana](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gaurav_sardana/32/171499_2.png) [@Gaurav\_Sardana](https://meta.discourse.org/u/Gaurav_Sardana)
#### Post date: [2020 年 3 月 2 日午前 11:12 UTC](https://meta.discourse.org/t/user-stats-with-a-proper-time-stamp/143066/3 "2020-03-02T11:12:54Z")

</div>

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

---

<div class="post-metadata">

### Author: ![Gaurav\_Sardana](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gaurav_sardana/32/171499_2.png) [@Gaurav\_Sardana](https://meta.discourse.org/u/Gaurav_Sardana)
#### Post date: [2020 年 3 月 2 日午前 11:14 UTC](https://meta.discourse.org/t/user-stats-with-a-proper-time-stamp/143066/4 "2020-03-02T11:14:19Z")

</div>

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

---

<div class="post-metadata">

### Author: ![Gaurav\_Sardana](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gaurav_sardana/32/171499_2.png) [@Gaurav\_Sardana](https://meta.discourse.org/u/Gaurav_Sardana)
#### Post date: [2020 年 3 月 2 日午前 11:17 UTC](https://meta.discourse.org/t/user-stats-with-a-proper-time-stamp/143066/5 "2020-03-02T11:17:34Z")

</div>

`SELECT count(*) from posts WHERE user_id=16 AND created_at > CURRENT_TIMESTAMP - INTERVAL '30 days'`を実行すると数値が返ってきますが、統計情報を見るとその数値より少なくなっています。  
もしご確認いただければ、データベースからは430が取得されましたが、実際には308です。  
 ![OnPaste.20200302-164643](https://cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/1/9/198e28a5837aabe517e1140f227bf464bbe04b55_2_690x53.png)

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [2020 年 3 月 2 日午前 11:21 UTC](https://meta.discourse.org/t/user-stats-with-a-proper-time-stamp/143066/6 "2020-03-02T11:21:00Z")

</div>

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

---

<div class="post-metadata">

### Author: ![Gaurav\_Sardana](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gaurav_sardana/32/171499_2.png) [@Gaurav\_Sardana](https://meta.discourse.org/u/Gaurav_Sardana)
#### Post date: [2020 年 3 月 2 日午前 11:22 UTC](https://meta.discourse.org/t/user-stats-with-a-proper-time-stamp/143066/7 "2020-03-02T11:22:00Z")

</div>

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

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [2020 年 3 月 2 日午前 11:32 UTC](https://meta.discourse.org/t/user-stats-with-a-proper-time-stamp/143066/8 "2020-03-02T11:32:05Z")

</div>

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

```SQL
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

```

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [2023 年 8 月 15 日午前 1:43 UTC](https://meta.discourse.org/t/user-stats-with-a-proper-time-stamp/143066/9 "2023-08-15T01:43:30Z")

</div>


