Query per le impostazioni email degli utenti

Come posso scoprire quanti utenti hanno impostato ciascuna opzione per le email?

Chiedo perché solo circa un decimo degli utenti che seguono un argomento riceve le notifiche via email per i nuovi post.

Grazie.

Quelli nella loro pagina Preferenze/Email? Quel campo si trova nella tabella user_options (email_level), e c’è anche quello dei messaggi privati (email_messages_level).

Penso che questo funzioni. Estrae gli utenti che seguono un particolare argomento e li conta per livello di email:

Chiave Livello Email
0 Sempre
1 Solo quando assente
2 Mai
-- [params]
-- int :topic_id

SELECT tu.topic_id AS topic_id,
uo.email_level,
COUNT(*)
FROM user_options uo
JOIN topic_users tu ON tu.user_id = uo.user_id
WHERE tu.notification_level = 3
AND tu.topic_id = :topic_id
GROUP BY topic_id, uo.email_level

Fammi sapere se ho combinato un pasticcio. :slightly_smiling_face::+1:


Aggiornamento:

Penso che anche questo funzioni: (e viene visualizzato in modo un po’ più ordinato)

-- [params]
-- int :topic_id

SELECT tu.topic_id AS topic_id,
COUNT(CASE WHEN tu.notification_level = 3 THEN 1 END) AS watching,
COUNT(CASE WHEN uo.email_level = 0 THEN 1 END) AS always,
COUNT(CASE WHEN uo.email_level = 1 THEN 1 END) AS only_when_away,
COUNT(CASE WHEN uo.email_level = 2 THEN 1 END) AS never
FROM user_options uo
INNER JOIN topic_users tu ON tu.user_id = uo.user_id
WHERE tu.notification_level = 3
AND tu.topic_id = :topic_id
GROUP BY topic_id
1 Mi Piace