대시보드 보고서 - 신뢰도별 사용자 수

이것은 신뢰 수준별 사용자 대시보드 보고서의 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개의 좋아요