顧客がどのドメインを使用しているかについて、よりよく理解したいと思います。 PHP各アドレスをexplode
し、そのようにドメインを数えることで簡単にこれを行うことができます。しかし、単純なMySQLだけでこの情報を取得する方法があるかどうか疑問に思っています。クエリ?
サンプル出力は次のようになります。
gmail.com | 3942
yahoo.com | 3852
hotmail.com | 209
...など。最初の列は電子メールアドレスドメインで、2番目の列はそのドメインのアドレス数です。
あなたはこのようなことをしなければならないでしょう:
SELECT substring_index(email, '@', -1) domain, COUNT(*) email_count
FROM table
GROUP BY substring_index(email, '@', -1)
-- If you want to sort as well:
ORDER BY email_count DESC, domain;
WoLpHの回答にORDERBYを追加すると、出力がより明確になります。
SELECT substring_index(email, '@', -1), COUNT(*) AS MyCount
FROM `database`.`table`
GROUP BY substring_index(email, '@', -1)
ORDER BY MyCount DESC;
上記のWolphのオリジナルを少し調整して、少し短くし、Nice列名を追加して、リストが長い場合に結果を制限します。自分の好みに合わせて制限を調整する
select substring_index(email, '@', -1) AS domain, count(*) from TABLE group by domain order by count(*) DESC limit 40;
select distinct SUBSTRING(Email, CHARINDEX('@', Email) + 1,LEN(Email) - CHARINDEX ('@', Email)), Count(*) from Tbl_name
Group by SUBSTRING(Email, CHARINDEX('@', Email) + 1,LEN(Email) - CHARINDEX ('@', Email))
order by Count(*) desc
このクエリを使用して、テーブルからドメインの一意のカウントを取得できます。
SELECT substr(email,INSTR(email,"@")+1),count(substr(email,INSTR(email,"@"))) from YOUR_TABLE group by substr(email,INSTR(email,"@"));
SELECT
substring_index(email_address, '@', -1) AS Domain
,COUNT(*) AS MyCount
FROM
database_name.table_name
GROUP BY
substring_index(email_address, '@', -1)
ORDER BY
MyCount DESC