Consulta de Data Explorer - Cobertura de Personal

Hola a todos,

¿Saben cuál es la consulta del Explorador de Datos que ayuda a ver el número y el porcentaje de publicaciones/temas del personal dentro de un período de tiempo determinado?

Gracias por toda la ayuda.

Espero que la siguiente consulta te ayude con eso.

--[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

Hola @michebs,

Gracias por compartir esto. ¿Puedo preguntar si podemos aplicar esto a un grupo específico creado por nosotros?

Digamos que tenemos un grupo de personal, pero no todos son moderadores o administradores, por lo que necesitamos crear un nuevo grupo llamado “Katalon_team”. ¿Podemos obtener los datos de todas las personas en ese equipo de Katalon?

Gracias.

Ajusté la consulta y agregué el nombre del grupo como parámetro de entrada, de esta manera funcionará para cualquier grupo. Espero que ayude.

--[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

Hola Michelle,

Gracias por el SQL actualizado. Tengo un problema al ejecutarlo, como se muestra en la imagen adjunta.

Por favor, indícame cómo podría resolver esto. Gracias.

Este error parece estar relacionado con la ausencia del último SELECT, línea 27.

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

¿Tiene sentido esto?

Sí, lo siento, fue mi error, muchas gracias por tu ayuda.