当有多封邮件需要统计时,如何统计每个客户收到了多少封邮件?
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
我想计算每个客户收到的电子邮件数量,但是我遇到了麻烦,因为 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