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 |

Email 列で group by 句を使用しようとしましたが、個別の Email 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 に答える