Это 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 |