MySQL选择发生“N”次的条目数

时间:2009-09-08 23:03:32

标签: sql mysql

我在表格中为抽奖活动收集了一些条目。我被客户要求提供:

  • 唯一条目数
  • 两次出现的条目数。
  • 三次出现的条目数。

我能够确定唯一条目的数量,但不确定如何提取特定次数的条目数。我试过这样的事情:

SELECT email,count(email)AS NumberOfEntries
FROM条目
GROUP BY NumberOfEntries

这给出了错误:无法对'NumberOfEntries'进行分组

我希望看到这样的事情:
NumberOfEntries /总计
1 / 1,000(意思是1000人进入一次,只有一次)
2 / 1,300(意思是1,300人正好两次输入)

感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

尝试:

SELECT numberOfEntries, count(*) FROM (
  SELECT email, count(*) AS numberOfEntries
    FROM entries
   GROUP BY email
)
GROUP BY numberOfEntries

您可以在内部选择中添加HAVING子句,以限制返回1,2,3或其他任何条目的条目数。

答案 1 :(得分:4)

这个怎么样:

SELECT email, count(email) as NumberOfEntries
FROM entries
GROUP BY email

将为您提供电子邮件列表和条目数(GROUP BY应列出所有非聚合列)。如果要将选择限制为仅包含2或3个条目的电子邮件,则需要使用having子句。

SELECT email, count(email) as NumberOfEntries
FROM entries
GROUP BY email
HAVING NumberOfEntries = 2

或者,要计算每个条目的数量,您可以将其包装在另一个查询中,如:

SELECT NumberOfEntries, COUNT(*) AS NumberOfEmails
FROM (SELECT email, count(email) as NumberOfEntries
    FROM entries
    GROUP BY email) AS x
GROUP BY NumberOfEntries
ORDER BY NumberOfEntries ASC

这应该为您提供条目数,以及有多少人拥有该条目数(从1个条目列出)