Von regulären Benutzern gelöste Themen

Von regulären Benutzern gelöste Themen

(Es gibt wahrscheinlich eine Möglichkeit, diese Abfrage mit der Mitarbeiterabfrage zu kombinieren.)

Die Anzahl der von Mitarbeitern gelösten Themen für einen bestimmten Zeitraum, aufgeschlüsselt nach Kategorien. Das Kategorienarray kann durch Bearbeiten dieser Zeile geändert werden: WHERE t.category_id = ANY ('{46,25,43,40,44,35,22,7,20,17,6,12}'::int[]). Es ist möglich, die Abfrage so anzupassen, dass sie Ergebnisse für alle Kategorien zurückgibt, oder das Kategorienarray als Zeichenkettenparameter im Format {1, 2, 3} zu übergeben.

-- [params]
-- int :months_ago = 1

WITH query_period AS (
SELECT
date_trunc('month', CURRENT_DATE) - INTERVAL ':months_ago months' as period_start,
date_trunc('month', CURRENT_DATE) - INTERVAL ':months_ago months' + INTERVAL '1 month' - INTERVAL '1 second' as period_end
)

SELECT
t.category_id,
COUNT(1) AS solved_count
FROM user_actions ua
JOIN topics t
ON t.id = ua.target_topic_id
JOIN query_period qp
ON ua.created_at >= qp.period_start
AND ua.created_at <= qp.period_end
JOIN users u
ON u.id = ua.user_id
WHERE t.category_id = ANY ('{46,25,43,40,44,35,22,7,20,17,6,12}'::int[])
AND ua.action_type = 15
AND (u.admin = 'f' AND u.moderator = 'f')
GROUP BY t.category_id
ORDER BY solved_count DESC