我试图平均每封邮件的每个收件人的打开次数。
我希望能够返回这样的内容:
Mailing Avg Open Per
1 1.3
2 3.4
3 0.5
我有三张桌子。以下是相关栏目
邮寄M
三种邮寄类型。
m_id:每封邮件的ID
m_name:三个邮件中的每个邮件的名称
邮寄收到的MR
u_id:收到邮件的人(多个用户可以收到多个邮件)
m_id:FK
邮寄开放式MOT *
打开/单击操作
muo_id:用户打开/点击的标识符
muo_type_id:1 =点击2 =打开
u_id:FK
以下是我尝试过的内容:
SELECT m.m_id, AVG(CASE WHEN muo_type_id = 1 THEN 1 END) AS "Avg Open"
FROM mailing m
Left join
mailing_received mr
on mr.m_id = m.m_id
Left join
mailing_open_type mot
ON mr.u_id = mot.u_id
GROUP BY m.m_id;
编辑。还试过这个:
SELECT m.m_id, AVG(N) AS A,
(SELECT COUNT(CASE WHEN mot.muo_type_id = 1 THEN 1 END) AS N
FROM mailing m LEFT JOIN mailing_received mr ON m.m_id = mr.mailing_id
LEFT OUTER JOIN mailing_open_type mot
ON mr.u_id = mot.u_id
GROUP BY mr.u_id) as B;
仍然没有运气。
感谢您的帮助。
答案 0 :(得分:0)
您几乎就在那里,尝试简单地将.. ELSE 0 ..
添加到您尝试过的第一个查询中:
SELECT m.m_id, AVG(CASE WHEN muo_type_id = 1 THEN 1 ELSE 0 END) AS "Avg Open"
FROM mailing m
Left join
mailing_received mr
on mr.m_id = m.m_id
Left join
mailing_open_type mot
ON mr.u_id = mot.u_id
GROUP BY m.m_id;