Argomenti risolti da utenti regolari

Argomenti risolti dagli utenti regolari

(Può esserci un modo per combinare questa query con quella del personale.)

Il numero di argomenti risolti dal personale in un determinato periodo di tempo, suddiviso per categorie. L’array delle categorie può essere modificato intervenendo su questa riga: WHERE t.category_id = ANY ('{46,25,43,40,44,35,22,7,20,17,6,12}'::int[]). È possibile modificare la query in modo che restituisca risultati per tutte le categorie, oppure in modo che l’array delle categorie venga fornito come parametro di tipo stringa nella forma {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