Mysql 计数另一个计数结果的出现次数

Mysql 计数另一个计数结果的出现次数,mysql,Mysql,我们有一个名为entries的表,该表根据日期存储用户信息。允许用户每天进入数据库一次。一些示例数据: +----+------------------+----------+ |id |电子邮件|日期| +----+------------------+----------+ | 1 | marty@domain.com | 04.09.13 | | 2 | john@domain.com | 04.09.13 | | 3 | marty@domain.com | 05.09.13 |

我们有一个名为
entries
的表,该表根据日期存储用户信息。允许用户每天进入数据库一次。一些示例数据:

+----+------------------+----------+
|id |电子邮件|日期|
+----+------------------+----------+
|  1 | marty@domain.com | 04.09.13 |
|  2 | john@domain.com  | 04.09.13 |
|  3 | marty@domain.com | 05.09.13 |
+----+------------------+----------+
我需要计算出数据库中同一封电子邮件的
X
条目有多少次。例如,对于上述数据,结果应该如下所示,其中我们有一个条目的1个实例和两个条目的1个实例:

+---------------+-------+
|输入次数|总计|
+---------------+-------+
|             1 |     1 |
|             2 |     1 |
+---------------+-------+

我尝试了一些方法,但我能得到的最远的结果是得到每个电子邮件地址被找到的次数。似乎我需要做的就是整理这些结果,并对这些组进行另一次计数以获得总数,但我不确定如何才能做到这一点。

以下内容将获得每封电子邮件的记录数:

SELECT COUNT(1) AS times_entered, email
FROM entries
GROUP BY email
因此,使用此查询作为派生表,我们可以按记录数分组以获得计数(我们不需要在子查询中选择
email
列,因为我们不关心它):


通常它可以是

select times_entered, count(*) from 
( select count(*) times_entered from entries group by email )
group by times_entered

不确定它是否适用于MySQL…

可能是这样的:

SELECT times_entered, COUNT( times_entered ) AS total
    FROM (
        SELECT COUNT( email ) AS times_entered
        FROM  `entries` 
        WHERE 1 
        GROUP BY email
    ) AS tmp
GROUP BY times_entered;

谢谢你的反馈。由于手头没有,我问自己MySQL SQL是否有一些限制。当时有,但是世界变了…:-)我相信子查询是在大约十年前的4.1中引入的:)我不知道您可以选择RDBMS。非常好的提示,谢谢。谢谢,这非常有效。我真的需要在某个阶段阅读中级到高级MySQL,我以前从未见过这样的嵌套SELECT。
SELECT times_entered, COUNT( times_entered ) AS total
    FROM (
        SELECT COUNT( email ) AS times_entered
        FROM  `entries` 
        WHERE 1 
        GROUP BY email
    ) AS tmp
GROUP BY times_entered;