モデレーターのフラグ処理効率レポート

これは、ユーザーが投稿に立てたフラグをフォーラムモデレーターが処理する際の効率と応答性を分析するための Data Explorer SQL クエリです。

このレポートは、サイトごとに、指定された期間における各モデレーターが処理したフラグの数と、フラグを解決するまでの平均時間を示します。

モデレーターがフラグにどれだけ迅速かつ効果的に対応するかを理解することは、管理者がフォーラムをすべてユーザーにとって安全で歓迎的な空間に保つために役立ちます。

-- [params]
-- date :start_date = 2023-01-01
-- date :end_date = 2024-01-01

WITH period_actions AS (
    SELECT pa.id,
           pa.post_action_type_id,
           pa.created_at,
           pa.agreed_at,
           pa.disagreed_at,
           pa.deferred_at,
           pa.agreed_by_id,
           pa.disagreed_by_id,
           pa.deferred_by_id,
           pa.post_id,
           pa.user_id,
           COALESCE(pa.disagreed_at, pa.agreed_at, pa.deferred_at) AS responded_at,
           EXTRACT(EPOCH FROM (COALESCE(pa.disagreed_at, pa.agreed_at, pa.deferred_at) - pa.created_at)) / 60 AS time_to_resolution_minutes -- 解決までの時間を分単位で表示
    FROM post_actions pa
    WHERE pa.post_action_type_id IN (3,4,6,7,8) -- フラグの種類
      AND pa.created_at >= :start_date
      AND pa.created_at <= :end_date
),
moderator_actions AS (
    SELECT pa.id,
           pa.post_id,
           pa.created_at,
           pa.responded_at,
           pa.time_to_resolution_minutes,
           COALESCE(pa.agreed_by_id, pa.disagreed_by_id, pa.deferred_by_id) AS moderator_id
    FROM period_actions pa
    WHERE COALESCE(pa.agreed_by_id, pa.disagreed_by_id, pa.deferred_by_id) IS NOT NULL
),
moderator_stats AS (
    SELECT
        m.moderator_id,
        u.username AS moderator_username,
        COUNT(m.id) AS handled_flags,
        AVG(m.time_to_resolution_minutes) AS avg_resolution_time_minutes
    FROM moderator_actions m
    JOIN users u ON u.id = m.moderator_id
    GROUP BY m.moderator_id, u.username
)
SELECT
    ms.moderator_username,
    ms.handled_flags,
    ROUND(ms.avg_resolution_time_minutes::numeric, 2) AS avg_resolution_time_minutes
FROM moderator_stats ms
ORDER BY ms.handled_flags DESC, ms.avg_resolution_time_minutes ASC

SQL クエリの説明

パラメータ

クエリは、分析対象の期間を定義するために 2 つのパラメータを使用します。

  • :start_date: 分析したい期間の開始日 (YYYY-MM-DD 形式)。
  • :end_date: 分析したい期間の終了日 (YYYY-MM-DD 形式)。

CTE の説明

  • period_actions: 指定された期間内に立てられたフラグを選択し、特定のフラグの種類に焦点を当てます。フラグが作成されてからモデレーターによって同意、不同意、または延期されるまでの解決にかかった時間(分単位)を計算します。
  • moderator_actions: period_actions から、モデレーターによって対応されたアクションのみを含むようにフィルタリングします。各アクションを担当したモデレーターを特定します。
  • moderator_stats: moderator_actions からデータを集計し、各モデレーターが処理したフラグの総数と、処理したフラグの平均解決時間(分単位)を計算します。

結果

クエリの最終的な出力は、処理したフラグの数でソートされたモデレーターのリストを提供し、平均解決時間で二次ソート(昇順)されます。各モデレーターについて、レポートは以下を示します。

  • moderator_username: モデレーターのユーザー名。
  • handled_flags: 指定された期間内にモデレーターが処理したフラグの総数。
  • avg_resolution_time_minutes: モデレーターがフラグを解決するのにかかった平均時間(小数点以下 2 桁に丸められます)。

結果例

moderator_username handled_flags avg_resolution_time_minutes
Moderator1 343 39.41
Moderator2 70 30.51
Moderator3 63 42.21