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
4 个赞

您好 @michebs

感谢您的分享。请问我们能否将此功能应用于我们自己创建的特定群组?

比如说,我们有一个员工群组,但并非所有员工都是版主或管理员,因此我们需要创建一个名为“Katalon_team”的新群组,我们能否获取该 Katalon 团队中所有人员的数据?

谢谢。

2 个赞

我调整了查询,并将组名添加为输入参数,这样它就可以适用于任何组。希望对您有帮助。

--[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
6 个赞

您好 Michelle,

感谢您提供更新后的 SQL。我在运行它时遇到了问题,如下图所示。

请告知我如何解决此问题。谢谢。

1 个赞

此错误似乎与缺少最后的 SELECT 语句(第 27 行)有关。

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

这有意义吗?

2 个赞

是的,抱歉是我的错,非常感谢您的帮助。

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.