사용자 이메일 설정 쿼리

각 이메일 설정을 사용하는 사용자가 몇 명인지 어떻게 알 수 있을까요?

토론 주제를 구독 중인 사용자 중 이메일로 게시글 알림을 받는 사용자가 약 10%에 불과하기 때문에 질문드립니다.

감사합니다.

Preferences/Emails 페이지에 있는 것인가요? 해당 필드는 user_options 테이블(email_level)에 있으며, 개인 메시지 관련 필드(email_messages_level)도 있습니다.

이 쿼리는 작동할 것 같습니다. 특정 주제를 모니터링하는 사용자를 추출하여 이메일 수준별로 집계합니다:

키 이메일 수준
0 항상
1 비활성일 때만
2 절대 안 함
-- [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

잘못된 부분이 있는지 알려주세요. :slightly_smiling_face::+1:


업데이트:

이 쿼리도 작동할 것 같습니다. (표시도 조금 더 깔끔합니다)

-- [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