Data Explorer Abfrage für % der von einer bestimmten Benutzergruppe gelösten Themen

Hallo zusammen, die mit Data Explorer spielen!

(Habt ein wenig Geduld mit mir, @michebs :smiley: – ich habe nur noch zwei weitere Fragen, ich hoffe, andere werden ebenfalls davon profitieren)

Hat jemand bereits eine Data Explorer-Abfrage erstellt, um den Prozentsatz der gelösten Themen nach spezifischer Gruppe, Monat und Jahr anzuzeigen?

Das Ergebnis wäre dann so, wobei die letzte Spalte den Prozentsatz enthält:

Wir können so etwas definitiv umsetzen, alle Daten sind vorhanden.

„Kaufen % gelöst“ … was genau meinen Sie damit?

  • Der Beitrag wurde im Januar erstellt.
  • Die Gruppe „awesome“ hat im Februar eine akzeptierte Antwort erhalten.
  • 73 weitere Themen wurden im Februar von anderen Gruppen und Nutzern gelöst.

Also hat die Gruppe „awesome“ im Februar eine Lösungsrate von 1,35 %?

Nehmen wir an, es gibt 100 Lösungen in einem Monat. Es gibt zwanzig Personen, die einer bestimmten Gruppe angehören, und diese Personen haben insgesamt zwanzig ihrer Antworten als Lösungen markiert. Ich möchte eine Abfrage erstellen, bei der ich in einem Skript die primäre Gruppen-ID angeben kann, um die Daten monatlich abzurufen und für diesen Monat 20/100 – also 20 % – anzuzeigen.

1 „Gefällt mir“

Hallo Konrad, entschuldige bitte die Verzögerung.
Ich prüfe noch einige Abfragen, möchte aber die Gelegenheit nutzen, um zu bestätigen: Ist dies das Ergebnis, auf das du wartest?

Jahr Monat Gruppenname tt_groups Gesamt %
2021 1 team1 40 70 57
2021 1 team2 30 70 43
1 „Gefällt mir“

Ich habe die Abfragen detaillierter gestaltet, um sie in Zukunft besser verstehen und warten zu können.

WITH users_groups AS (
    SELECT 
        user_id, 
        g.id,
        g.name group_name 
    FROM users u
    INNER JOIN user_actions ua ON ua.user_id = u.id
    LEFT JOIN groups g ON g.id = u.primary_group_id
    WHERE ua.action_type = 15
    GROUP BY user_id, g.id
),
    
tt_solution_by_month AS (
    SELECT 
        date_part('year', created_at) AS year, 
        date_part('month', created_at) AS month,
		COUNT(*) AS "total"
	FROM user_actions ua
	WHERE ua.action_type = 15
	GROUP BY date_part('year', created_at), date_part('month', created_at)
	ORDER BY date_part('year', created_at) ASC, date_part('month', created_at)
),
	
tt_solution_groups_by_month AS (
    SELECT 
        date_part('year', created_at) AS year, 
        date_part('month', created_at) AS month,
        ug.group_name,
    	COUNT(*) AS "tt_groups"
    FROM user_actions ua
    INNER JOIN users_groups ug ON ug.user_id = ua.user_id
    WHERE ua.action_type = 15
    GROUP BY ug.group_name, date_part('year', created_at), date_part('month', created_at)
    ORDER BY date_part('year', created_at) ASC, date_part('month', created_at), ug.group_name)
    
SELECT 
    ts.year,
    ts.month,
    COALESCE(tsg.group_name,'without group'),
    tt_groups,
    total,
    TRUNC((tt_groups::decimal/total::decimal) *100,1) AS "%"
FROM tt_solution_groups_by_month tsg  
INNER JOIN tt_solution_by_month ts 
    ON ts.year = tsg.year AND ts.month = tsg.month 


Lass mich bitte wissen, ob dies das erwartete Ergebnis ist oder ob ich etwas anpassen soll.

Michelle

3 „Gefällt mir“

Kein Problem! Du bist hier mein Retter! :smiley:

Fast perfekt! Ich brauche weder die tt_groups- noch die total-Spalte, nur die Prozentzahl. Bei der Spalte group_name ist es eine Abfrage für eine einzelne Gruppe, also ist diese Spalte ebenfalls nicht erforderlich. Im Abfragecode werde ich einfach die primary_group_id angeben, sodass nur Lösungen für genau diese Gruppe gesucht werden.

1 „Gefällt mir“

Angepasst. :slightly_smiling_face:

-- [params]
-- string :primary_group_id

WITH users_groups AS (
    SELECT 
        user_id, 
        g.id,
        g.name group_name 
    FROM users u
    INNER JOIN user_actions ua ON ua.user_id = u.id
    LEFT JOIN groups g ON g.id = u.primary_group_id
    WHERE ua.action_type = 15
    AND u.primary_group_id = :primary_group_id
    GROUP BY user_id, g.id
),
    
tt_solution_by_month AS (
    SELECT 
        date_part('year', created_at) AS year, 
        date_part('month', created_at) AS month,
		COUNT(*) AS "total"
	FROM user_actions ua
	WHERE ua.action_type = 15
	GROUP BY date_part('year', created_at), date_part('month', created_at)
	ORDER BY date_part('year', created_at) ASC, date_part('month', created_at)
),
	
tt_solution_groups_by_month AS (
    SELECT 
        date_part('year', created_at) AS year, 
        date_part('month', created_at) AS month,
        ug.group_name,
    	COUNT(*) AS "tt_groups"
    FROM user_actions ua
    INNER JOIN users_groups ug ON ug.user_id = ua.user_id
    WHERE ua.action_type = 15
    GROUP BY ug.group_name, date_part('year', created_at), date_part('month', created_at)
    ORDER BY date_part('year', created_at) ASC, date_part('month', created_at), ug.group_name)
    
SELECT 
    ts.year,
    ts.month,
    TRUNC((tt_groups::decimal/total::decimal) *100,1) AS "%"
FROM tt_solution_groups_by_month tsg  
INNER JOIN tt_solution_by_month ts 
    ON ts.year = tsg.year AND ts.month = tsg.month
4 „Gefällt mir“

Perfekt! Das ist genau das, was ich gesucht habe!

2 „Gefällt mir“

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