66

如果我有三列:

orderNumber, name, email

我想计算表中有多少独特的电子邮件我该怎么做?

像这样的声明:

SELECT count(email) FROM orders

给我总数。

我试过SELECT DISTINCT count(email) FROM orders

但这似乎并没有给我我期望的数字。

4

4 回答 4

146

采用

SELECT count( DISTINCT(email) ) FROM orders

Distinct 提供唯一的电子邮件 ID,然后简单地计算它们。

于 2013-05-22T16:40:33.943 回答
10
SELECT  count(DISTINCT(email)) FROM orders

它与您的帖子不同,因为它在计算之前过滤掉了重复项

于 2013-05-22T16:40:23.253 回答
4

接受的灵魂对我不起作用 - 它为表中的每个唯一电子邮件地址返回一个“1”。

这是我必须做的才能获得所需的信息:

select email, count(email) AS total from sysAccessLog group by email order by total desc

它返回电子邮件地址列表和出现次数。

于 2018-11-15T18:38:02.390 回答
0

为了获得最佳性能,您应该使用:

SELECT 
sub.email, 
count(1) as 'count_unique' 
FROM 
(SELECT email FROM orders GROUP by email) sub
于 2018-02-08T11:10:52.237 回答