当有多封邮件需要统计时,如何统计每个客户收到了多少封邮件?

How do I count how many emails each customer has received when there are multiple emails to count?

我想计算每个客户收到的电子邮件数量,但是我遇到了麻烦,因为 table 中有不止一个客户需要计算,这意味着一个简单的 where 子句是不够的。

这里是数据的一个例子:

CustomerID EmailName
1 EmailA
1 EmailB
2 EmailA
2 EmailB
2 EmailC
3 EmailA
3 EmailB

我可以使用 where 子句计算特定客户的数量:

WHERE CustomerID = "1"

哪个 return:

CustomerID NumberOfEmailsSent
1 2

我遇到的问题是我想得到以下结果:

CustomerID NumberOfEmailsSent
1 2
2 3
3 2

我正在使用的数据集有数千个电子邮件地址,因此分别查询每个电子邮件地址是一个不切实际的解决方案。

这就是 GROUP BY 的目的。

SELECT CustomerID, COUNT(EmailName)
FROM YourTable
GROUP BY CustomerID

我认为您只需要一个 GROUP BY 子句:

SELECT CustomerID, COUNT(EmailName) as 'NumberOfEmailsSent'
FROM tbl
GROUP BY CustomerID

此处输出检查 DB<>FIDDLE