Query Esplora Dati - Copertura del personale

Ciao a tutti,

Sapete per caso la query di Data Explorer che aiuta a vedere il numero e la percentuale di post/argomenti dello staff entro un certo periodo di tempo?

Grazie per tutto l’aiuto.

Spero che la seguente query ti aiuti.

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

Ciao @michebs,

Grazie per aver condiviso questo. Posso chiedere se possiamo applicarlo a un gruppo specifico creato da noi?

Supponiamo di avere un gruppo di personale ma non tutti sono moderatori o amministratori, quindi dobbiamo creare un nuovo gruppo chiamato “Katalon_team”, possiamo ottenere i dati di tutte le persone in quel team Katalon?

Grazie.

2 Mi Piace

Ho modificato la query e aggiunto il nome del gruppo come parametro di input, in questo modo funzionerà per qualsiasi gruppo. Spero sia d’aiuto.

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

Ciao Michelle,

Grazie per l’SQL aggiornato. Ho riscontrato un problema durante l’esecuzione, come mostrato nell’immagine allegata.

Per favore, consigliami come potrei risolvere questo problema. Grazie.

1 Mi Piace

Questo errore sembra essere collegato all’assenza dell’ultimo SELECT, riga 27.

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

Ha senso?

2 Mi Piace

Sì, scusa il mio errore, grazie mille per il tuo aiuto.

2 Mi Piace

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