Sono nelle prime fasi di preparazione di un report settimanale dei dati del mio sito. Al momento sto esaminando alcune delle metriche che voglio monitorare attivamente. Sono interessato al report dei termini di ricerca di tendenza, ma guardando la sua cronologia, sembra che i dati possano essere pesantemente distorti dalle ricerche degli amministratori/moderatori.
Il forum funge in parte da knowledge base di supporto per i prodotti che la mia azienda produce e, come tali, spesso cerchiamo post pertinenti di risoluzione dei problemi quando rispondiamo ai ticket. Esiste un modo semplice per rimuovere le ricerche degli amministratori/moderatori da questo report?
--[params]
-- date :start_date
-- date :end_date
WITH admin_moderator_users AS (
SELECT
gu.user_id
FROM
group_users gu
JOIN
groups g ON gu.group_id = g.id
WHERE
g.name IN ('admins', 'moderators')
)
SELECT
lower(sl.term) AS search_term,
count(sl.id) AS term_count,
(COALESCE(SUM(CASE WHEN sl.search_result_type IS NULL THEN 0 ELSE 1 END), 0) / count(sl.id)::float) * 100 AS click_through_rate,
SUM(CASE WHEN sl.search_result_type IS NULL THEN 0 ELSE 1 END) as click_count
FROM
search_logs sl
LEFT JOIN
admin_moderator_users amu ON sl.user_id = amu.user_id
WHERE
sl.created_at::date BETWEEN :start_date AND :end_date
AND amu.user_id IS NULL
GROUP BY
lower(sl.term)
ORDER BY
term_count DESC
Ecco l’SQL per il report del dashboard Termini di ricerca di tendenza: