これは、モデレーターに通知するためのダッシュボードレポートのSQLバージョンです。
このダッシュボードレポートは、通知サブタイプ notify_moderators を持つモデレーターに送信されたプライベートメッセージの1日のカウントを提供します。このインサイトは、管理者がモデレーターの注意に対する需要の高い期間を理解するのに役立ち、モデレーションの支援を必要とする問題にユーザーが直面している可能性のある時期を示す可能性があります。
-- [params]
-- date :start_date = 2023-12-15
-- date :end_date = 2024-01-16
SELECT
DATE(created_at) AS day,
COUNT(1) AS notifications_count
FROM topics
WHERE archetype = 'private_message'
AND subtype = 'notify_moderators'
AND created_at BETWEEN :start_date AND :end_date
AND deleted_at IS NULL
AND user_id > 0
GROUP BY DATE(created_at)
ORDER BY day
SQLクエリの説明
このクエリは、指定された期間内にモデレーターへのプライベートメッセージとして適格な topics テーブルからデータを抽出することによって機能します。詳細を見ていきましょう。
- 日付パラメータ:
- クエリは、レポートの日付範囲を定義する2つのパラメータ、
:start_dateと:end_dateを受け入れます。両方の日付パラメータはYYYY-MM-DDの日付形式を受け入れます。
- クエリは、レポートの日付範囲を定義する2つのパラメータ、
- 選択とカウント:
DATE(created_at)はcreated_atタイムスタンプを日付形式に変換し、dayとしてラベル付けします。これにより、作成された日ごとにメッセージをグループ化してカウントできます。COUNT(1)は、各日のエントリ数をカウントし、このカウントをnotifications_countとしてラベル付けするために使用されます。
- フィルタリング基準:
- クエリは、
archetypeが'private_message'であるエントリのみをフィルタリングし、他のタイプのトピックではなくメッセージのみを対象としていることを保証します。 subtypeは'notify_moderators'に制限されており、ユーザーがモデレーターに通知または支援を要求するケースを分離します。- メッセージの
created_atタイムスタンプが指定された:start_dateと:end_dateの間にあることを確認します。 - 削除されたメッセージ(
deleted_at IS NULL)はカウントから除外され、レポートがアクティブな通信のみを反映していることを保証します。 - 最後に、
user_id > 0を確認することにより、メッセージが有効なユーザーに関連付けられていることを確認します。
- クエリは、
- グループ化と並べ替え:
- クエリは
GROUP BY DATE(created_at)を使用して、指定された日付範囲内の各日ごとに結果を集計します。 - 次に、
ORDER BY dayで結果を時系列に並べ替え、レポートを読みやすく解釈しやすくします。
- クエリは
結果例
| day | notifications_count |
|---|---|
| 2023-12-17 | 3 |
| 2023-12-18 | 1 |
| 2023-12-21 | 1 |
| 2023-12-23 | 2 |
| 2023-12-26 | 1 |