仪表板报告 - 每个信任级别的用户

这是用户信任级别仪表板报告的 SQL 版本。

本报告提供了 Discourse 社区内用户信任级别分布的概览。

SELECT 
    CASE
        WHEN trust_level = 0 THEN 'newuser'
        WHEN trust_level = 1 THEN 'basic'
        WHEN trust_level = 2 THEN 'member'
        WHEN trust_level = 3 THEN 'regular'
        WHEN trust_level = 4 THEN 'leader'
        ELSE 'unknow'
    END,
    COUNT(users) 
FROM users
WHERE 
    id > 0
    AND NOT EXISTS(
                     SELECT 1
                     FROM anonymous_users a
                     WHERE a.user_id = users.id
                  )
GROUP BY trust_level
ORDER BY trust_level

查询细分

  • SELECT CASE: 查询的这部分使用 CASE 语句为每个信任级别分配一个人类可读的名称。它将数字 trust_level 字段转换为诸如“newuser”、“basic”、“member”、“regular”和“leader”之类的字符串,以便于理解。
  • COUNT(users): 此函数计算每个信任级别内的用户数量。
  • FROM users: 查询从 users 表中提取数据,该表包含社区中的所有用户帐户。
  • WHERE id > 0: 此条件确保只考虑真实用户,排除任何 ID 为 0 或更低的系统帐户。
  • AND NOT EXISTS: 此子查询通过检查 anonymous_users 表来过滤掉任何被标记为匿名的用户。如果用户在 anonymous_users 表中有条目,则不将其计入。
  • GROUP BY trust_level: 此子句按信任级别对结果进行分组,确保为每个级别单独进行计数。
  • ORDER BY trust_level: 最后,结果按 trust_level 字段排序,确保输出从最低级别(newuser)到最高级别(leader)进行排序。

示例结果

case count
newuser 1235
basic 234
member 345
regular 56
leader 23
1 个赞