Data Explorer 쿼리 - 직원 커버리지

안녕하세요,

특정 기간 내 직원 게시글/토픽의 수와 비율을 확인할 수 있는 Data Explorer 쿼리를 아시는 분 계신가요?

도와주셔서 감사합니다.

다음 쿼리가 도움이 되기를 바랍니다.

--[params]
--date  :start_date
--date  :end_date

WITH posts_data AS (
    SELECT 
        COUNT(*) AS total_posts,
        SUM(CASE
            WHEN u.admin = 't' OR u.moderator = 't' THEN 1 
            ELSE 0
        END) AS staff_posts
    FROM posts p
    INNER JOIN users u ON u.id = p.user_id
    WHERE p. post_type = 1
        AND p.deleted_at ISNULL
        AND p.created_at BETWEEN :start_date AND :end_date
        AND p.user_id > 0
)
        
SELECT 
    total_posts, 
    staff_posts,
    ROUND((staff_posts/total_posts::decimal)*100,2) "staff_posts %"
FROM posts_data
total_posts staff_posts staff_posts %
7400 3108 42.0

안녕하세요, @michebs,

공유해 주셔서 감사합니다. 우리가 직접 만든 특정 그룹에 대해 이 기능이 적용될 수 있는지 여쭤봐도 될까요?

예를 들어, 직원 그룹이 있지만 그중 일부는 모더레이터나 관리자가 아닌 경우, "Katalon_team"이라는 새 그룹을 만들어야 합니다. 이 Katalon 팀에 속한 모든 구성원의 데이터를 가져올 수 있을까요?

감사합니다.

쿼리를 조정하고 그룹 이름을 입력 매개변수로 추가하여 이제 모든 그룹에 대해 작동하도록 만들었습니다. 도움이 되길 바랍니다.

--[params]
--date      :start_date = 2022-01-01
--date      :end_date = 2023-01-01
--string    :group_name = staff

WITH group_filter AS (
    SELECT user_id FROM group_users gu
    JOIN groups g ON g.id = gu.group_id
    WHERE LOWER(g.name) LIKE '%'||:group_name||'%'
),

posts_data AS (
    SELECT 
        COUNT(*) AS total_posts,
        SUM(CASE
            WHEN gf.user_id ISNULL THEN 0
            ELSE 1
        END) AS staff_posts
    FROM posts p
    LEFT JOIN group_filter gf ON gf.user_id = p.user_id
    WHERE p. post_type = 1
        AND p.deleted_at ISNULL
        AND p.created_at BETWEEN :start_date AND :end_date
        AND p.user_id > 0
)
       
SELECT 
    total_posts, 
    staff_posts,
    ROUND((staff_posts/total_posts::decimal)*100,2) "staff_posts %"
FROM posts_data

미셸, 안녕하세요.

업데이트된 SQL을 보내주셔서 감사합니다. 첨부된 이미지와 같이 실행하는 데 문제가 발생했습니다.

이 문제를 해결하는 방법에 대해 조언해 주시겠습니까? 감사합니다.

이 오류는 27번째 줄의 마지막 SELECT 구문이 누락된 것과 관련이 있는 것 같습니다.

SELECT 
    total_posts, 
    staff_posts,
    ROUND((staff_posts/total_posts::decimal)*100,2) "staff_posts %"
FROM posts_data

이렇게 이해하는 것이 맞을까요?

네, 죄송합니다. 제 실수였습니다. 도움을 주셔서 정말 감사합니다.