Sujets résolus par des utilisateurs réguliers
(Il existe probablement un moyen de combiner cette requête avec la requête du personnel.)
Le nombre de sujets résolus par le personnel pour une période donnée, ventilé par catégories. Le tableau des catégories peut être modifié en éditant cette ligne : WHERE t.category_id = ANY ('{46,25,43,40,44,35,22,7,20,17,6,12}'::int[]). Il est possible de modifier la requête afin qu’elle renvoie des résultats pour toutes les catégories, ou que le tableau des catégories soit fourni sous forme de paramètre de chaîne au format {1, 2, 3}.
-- [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