这是用户信任级别仪表板报告的 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 |