0

簡単にするために、登録ユーザーのデータベースを取得しました。各電子メールドメイン名に存在する電子メールの数を数えたいです(すべてのドメイン名を知っているわけではないことに注意してください)

たとえば、Usersテーブル-

id    |    email
------------------
1     | test@hotmail.com
2     | test@somesite.aaa<--unknown to me
3     | test@unknownsite.aaa<--unknown to me
4     | test@hotmail.com
5     | test@somesite.aaa<--unknown to me
6     | test@yahoo.com
7     | test@yahoo.com
8     | test@hotmail.com

(注:どのメールを正確に指定せずに各メールをカウントしたい)

だから私が欲しい結果は

suffix         |   count
hotmail.com    |    3
somesite.aaa   |    2
unknownsite.aaa|    1
yahoo.com      |    2

繰り返しになりますが、私はこれを強調します。unknownsite.aaaはわかりません。また、私には不明であるため、ステートメントで言及することもできません。明確になっていることを願っています。

したがって、基本的に、自分のWebサイトユーザーが電子メールホストWebサイトとして使用しているものの統計を作成したいと思います。しかし、私が言ったように、そして私は3回繰り返しますが、私は存在するすべてのメールホストを知りません。

私はこれをさらに調査するつもりです、私はこれがmysqlが処理できないものであると感じています。

編集:

私は次の解決策を思いついたが、少し冗長に見えるので、私は嫌いです:P

select substring_index(`email`,'@',-1),count(*) as count from users group by substring_index(`email`,'@',-1) order by count ASC;
4

2 に答える 2

3
SELECT   SUBSTRING_INDEX(email, '@', -1) AS suffix, COUNT(*) AS count
FROM     users
GROUP BY suffix

sqlfiddleでそれを参照してください。

于 2012-10-14T21:48:49.740 に答える
0

mysql で RLIKE または REGEXP を使用する

http://dev.mysql.com/doc/refman/5.0/en/regexp.html

于 2012-10-14T21:37:59.940 に答える