我们有一个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,这不是我想要的。我真正希望能够做的是选择不同的工具 - 电子邮件对并计算它们在表格中的出现次数。实现这一目标的最佳方法是什么?我应该看看加入吗?
会欣赏正确方向的任何指示。
答案 0 :(得分:3)
这可能就是你所需要的吗?
SELECT Tool, Email, COUNT(*)
FROM tbl
GROUP BY Tool, Email
ORDER BY COUNT(*) DESC
<强>结果强>
| TOOL | EMAIL | COUNT(*) | -------------------------------------------- | Tool 1 | boy1@gmail.com | 3 | | Tool 1 | boy2@gmail.com | 2 | | Tool 9 | anotherboy@yahoo.com | 2 | | Tool 5 | boy2@gmail.com | 1 | | Tool 2 | boy1@gmail.com | 1 |
答案 1 :(得分:2)
您需要GROUP BY
声明。
SELECT Tool, COUNT(*), Email
FROM table
GROUP BY Tool, Email