Отчет по панели управления — пользователи по типам

Это SQL-версия отчета «Дашборд: Пользователи по типам».

Этот отчет предоставляет подсчет пользователей по конкретным ролям и статусам в сообществе Discourse. Он разделяет пользователей на четыре отдельные группы: Администраторы, Модераторы, Заблокированные и Заглушенные пользователи. Цель данного отчета — предоставить менеджерам сообщества быстрое представление о распределении типов пользователей и тех, у кого доступ ограничен из-за блокировки или заглушения.

SELECT "Type", "Count" FROM (
    SELECT 'Admin' AS "Type", COUNT(id) AS "Count", 1 rk FROM users WHERE admin = true AND id > 0
    UNION SELECT 'Moderator', COUNT(id), 2 FROM users WHERE moderator = true AND id > 0
    UNION SELECT 'Suspended', COUNT(id), 3 FROM users WHERE suspended_till > current_date
    UNION SELECT 'Silenced', COUNT(id), 4 FROM users WHERE silenced_till > current_date) AS data
ORDER BY rk

Пояснение к SQL-запросу

  • Запрос создает производную таблицу data с тремя столбцами: «Type» (Тип), «Count» (Количество) и столбец ранжирования rk, чтобы обеспечить логический порядок итоговых результатов (Администраторы, Модераторы, Заблокированные, Заглушенные).
  • Для каждой роли или статуса пользователя (Администратор, Модератор, Заблокированный, Заглушенный) оператор SELECT подсчитывает количество пользователей, соответствующих критериям:
    • Администраторы определяются по условию admin = true.
    • Модераторы определяются по условию moderator = true.
    • Заблокированные пользователи — это те, у кого дата suspended_till находится в будущем (suspended_till > current_date).
    • Заглушенные пользователи — это те, у кого дата silenced_till находится в будущем (silenced_till > current_date).
  • Каждый оператор SELECT включает жестко заданный ранг (rk) для целей сортировки.
  • Оператор UNION используется для объединения результатов четырех операторов SELECT в один результирующий набор.
  • Внешний оператор SELECT затем извлекает столбцы «Type» и «Count» из производной таблицы и сортирует результаты по столбцу rk.

Пример результатов

Тип Количество
Администратор 14
Модератор 30
Заблокированный 3
Заглушенный 2
1 лайк