ダッシュボードレポート - モデレーターに通知

これは、モデレーターに通知するためのダッシュボードレポートの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 の日付形式を受け入れます。
  • 選択とカウント:
    • 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
「いいね!」 4