대시보드 보고서 - 유형별 사용자

사용자 유형별 대시보드 보고서의 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 쿼리 설명

  • 이 쿼리는 세 개의 열인 “Type”, “Count” 및 최종 결과가 논리적으로 정렬되도록(관리자, 모더레이터, 정지, 침묵) 하는 랭킹 열 rk를 가진 유도 테이블 data를 생성합니다.
  • 각 사용자 역할 또는 상태(관리자, 모더레이터, 정지, 침묵)에 대해 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 열 기준으로 결과를 정렬합니다.

결과 예시

Type Count
Admin 14
Moderator 30
Suspended 3
Silenced 2
1개의 좋아요