我正在制作一个时事通讯工具,其中包含一个存储电子邮件地址的用户和电子邮件ID的表,用于计算每封已发送电子邮件的总数和唯一数 .
我想显示一个详细的页面,其中包含电子邮件地址的用户和用户打开电子邮件的计数时间 .
db表的示例:
email_id | user_id | user
----------------------------
1 | 1 | alpha@domain.com
1 | 1 | alpha@domain.com
1 | 1 | alpha@domain.com
1 | 2 | beta@domain.com
1 | 3 | gamma@test.org
1 | 4 | mars@planet.net
1 | 4 | mars@planet.net
网页结果:
║ User ║ Times ║
╬═══════════════════╬═══════╣
║ alpha@domain.com ║ 3 ║
║ beta@domain.com ║ 1 ║
║ gamma@test.org ║ 1 ║
║ mars@planet.net ║ 2 ║
我尝试了以下查询,但它只适用于第一行,然后它截断其余的:
SELECT DISTINCT user, count(DISTINCT user) as counttotal
FROM newsletter_log
where email_id = 1
4 回答
只需做一个
GROUP BY
. 使用COUNT(*)
来计算 .试试这个 .
你不需要使用不同的 . 只需使用group by .
概念就像,你想根据用户群得到计数 . 因此,请将用户视为组,并按组进行计数 .
对于知识,您可以研究各种计数模式,如计数(*),计数(1)等 .
包括总数: