Im Rahmen der Arbeit mit @icaria36 an der Verbesserung seiner Nutzung von Discourse-Gruppen als Unterstützungssystem haben wir einige Abfragen entwickelt (weitere folgen). Lassen Sie uns wissen, falls Sie Probleme oder Verbesserungsmöglichkeiten erkennen ![]()
Zeit bis zur ersten Antwort für eine Support-Gruppe
- Durchschnittliche Anzahl der Tage für einen bestimmten Zeitraum: (im Beispiel vom 2019-04-04 bis 2019-04-06)
- Zählt nur Werktage (d. h. Samstag und Sonntag werden ausgeschlossen)
- Berücksichtigt ausgewählte Feiertage nicht (im Beispiel 2019-04-11)
- Der Gruppenname im Beispiel ist ‘support’
SELECT AVG(t.days)::float AS "Durchschnittliche Werktage bis zur ersten Antwort"
FROM (
SELECT t.id, t.title, t.created_at, MIN(p.created_at) as "erste_Antwort_erstellt_am", (
SELECT count(*) FILTER (
WHERE d not in ('2019-04-11')
AND extract('ISODOW' FROM d) < 6
)
FROM generate_series(t.created_at::timestamp::date
, MIN(p.created_at)::timestamp::date
, interval '1 day') as s(d)
) as "tage"
FROM topics t
INNER JOIN posts p ON p.topic_id = t.id AND (
CASE WHEN p.post_number = 1
THEN p.via_email IS TRUE
ELSE true
END
)
WHERE t.archetype = 'private_message'
AND t.id IN (
SELECT topic_id FROM topic_allowed_groups
WHERE group_id IN (SELECT id FROM groups WHERE name ilike 'support')
)
AND t.deleted_at IS NULL
AND t.created_at::timestamp::date >= '2019-04-04'
AND t.created_at::timestamp::date <= '2019-04-06'
AND p.deleted_at IS NULL
AND p.post_number > 1
GROUP BY t.id
) t
Um zu testen, ob die Abfrage korrekt funktioniert, können Sie den SELECT-Teil von einem Durchschnittswert ändern in:
t.days as "Werktage", t.title, t.created_at, t.first_reply_created_at
Zum Beispiel erhalte ich in meiner Sandbox, wenn ich dies tue:
Hinweise:
- Möchten Sie Antworten am selben Tag als 0 oder 1 zählen? (aktuell ist es 1)
- Wie möchten Sie Nachrichten ohne Antworten behandeln? (d. h. sollten sie ausgeschlossen werden, oder wie viele Tage sollten ihnen zugerechnet werden?). Aktuell werden Nachrichten ohne Antworten von der Zählung ausgeschlossen.
Anzahl der in einer bestimmten Gruppe empfangenen Nachrichten
- Der Gruppenname im Beispiel ist ‘support’
- Zählung für einen bestimmten Zeitraum: (im Beispiel vom 2019-04-04 bis 2019-04-06)
SELECT count(t) as "Anzahl der Nachrichten"
FROM topics t
WHERE t.archetype = 'private_message'
AND t.id IN (
SELECT topic_id FROM topic_allowed_groups
WHERE group_id IN (SELECT id FROM groups WHERE name ilike 'support')
)
AND (
SELECT via_email FROM posts
WHERE topic_id = t.id AND post_number = 1
)
AND t.deleted_at IS NULL
AND t.created_at::timestamp >= '2019-04-04'::timestamp
AND t.created_at::timestamp <= '2019-04-06'::timestamp
