0

我们有一个 MySql 表,我们在其中记录每个访问者访问应用程序的日期。因此,在任何时间点,该表可能如下所示:

| Tool   | Email                | Date     |
|--------+----------------------+----------|
| Tool 1 | boy1@gmail.com       | 03/03/13 |
| Tool 1 | boy2@gmail.com       | 03/05/13 |
| Tool 9 | anotherboy@yahoo.com | 09/01/13 |
| Tool 1 | boy1@gmail.com       | 10/07/12 |
| Tool 2 | boy1@gmail.com       | 01/01/10 |
| Tool 5 | boy2@gmail.com       | 05/04/12 |
| Tool 1 | boy1@gmail.com       | 05/10/13 |
| Tool 1 | boy2@gmail.com       | 09/10/12 |
| Tool 9 | anotherboy@yahoo.com | 10/07/13 |

我们想要做的是获取每个访问者(由电子邮件 ID 标识)访问工具的次数。所以,对于上表,我们希望能够实现的是:

| Tool   | Email                | Number of Visits |
|--------+----------------------+------------------|
| Tool 1 | boy1@gmail.com       |                3 |
| Tool 1 | boy2@gmail.com       |                2 |
| Tool 9 | anotherboy@yahoo.com |                2 |
| Tool 2 | boy1@gmail.com       |                1 |
| Tool 5 | boy2@gmail.com       |                1 |

我曾尝试在电子邮件列上使用 group by 子句,但这给了我不同的电子邮件 ID,这不是我想要的。我真正想做的是选择不同的工具 - 电子邮件对并计算它们在表格中的出现次数。实现这一目标的最佳方法是什么?我应该看联接吗?

将不胜感激任何正确方向的指示。

4

2 回答 2

3

这就是你所需要的吗?

SELECT Tool, Email, COUNT(*)
FROM tbl
GROUP BY Tool, Email
ORDER BY COUNT(*) DESC

结果

| 工具 | 电子邮件 | 计数(*) |
------------------------------------------
| 工具 1 | boy1@gmail.com | 3 |
| 工具 1 | boy2@gmail.com | 2 |
| 工具 9 | anotherboy@yahoo.com | 2 |
| 工具 5 | boy2@gmail.com | 1 |
| 工具 2 | boy1@gmail.com | 1 |

查看演示

于 2013-03-06T21:20:28.833 回答
2

你想要GROUP BY声明。

SELECT Tool, COUNT(*), Email
FROM table
GROUP BY Tool, Email
于 2013-03-06T21:20:38.767 回答