Data Explorer Abfrage - Personalabdeckung

Hallo zusammen,

Wissen Sie zufällig, welche Data Explorer-Abfrage hilft, die Anzahl und den Prozentsatz der Mitarbeiterbeiträge/Themen in einem bestimmten Zeitraum anzuzeigen?

Vielen Dank für Ihre Hilfe.

Ich hoffe, die folgende Abfrage hilft Ihnen dabei.

--[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 „Gefällt mir“

Hallo @michebs,

Vielen Dank, dass Sie dies geteilt haben. Kann ich fragen, ob wir dies für eine bestimmte von uns erstellte Gruppe anwenden können?

Nehmen wir an, wir haben eine Gruppe von Mitarbeitern, aber nicht alle sind Moderatoren oder Administratoren. Wir müssen also eine neue Gruppe namens „Katalon_team“ erstellen. Können wir die Daten aller Personen in diesem Katalon-Team erhalten?

Vielen Dank.

2 „Gefällt mir“

Ich habe die Abfrage angepasst und den Gruppennamen als Eingabeparameter hinzugefügt, damit sie für jede Gruppe funktioniert. Ich hoffe, das hilft.

--[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 „Gefällt mir“

Hallo Michelle,

vielen Dank für das aktualisierte SQL. Ich habe ein Problem beim Ausführen, siehe angehängtes Bild.

Bitte geben Sie mir einen Rat, wie ich dies lösen kann. Vielen Dank.

1 „Gefällt mir“

Dieser Fehler scheint mit dem Fehlen der letzten SELECT-Anweisung in Zeile 27 zusammenzuhängen.

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

Macht das Sinn?

2 „Gefällt mir“

Ja, Entschuldigung, mein Fehler, vielen Dank für Ihre Hilfe.

2 „Gefällt mir“

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