MySQL получает сводку данных, основанную на части строки - PullRequest
0 голосов
/ 27 сентября 2011

У меня есть таблица с информацией о пользователях, из которой я хочу получить отчет со списком наиболее распространенных доменов.Я знаю, что мне нужно использовать count и group by, но я не уверен, как группировать только по части строки, начиная с символа '@'.Любой совет?

id  email                name          etc..
---------------------------------------------
1   username@domain.com  User Userson  blah

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

SUBSTRING_INDEX может быть полезно здесь:

select 
  substring_index(email,'@',-1) as domain
  ,count(*) as userCount 
from your_table
group by domain 
order by usercount desc;
1 голос
/ 27 сентября 2011

Попробуйте этот метод, используя LOCATE() и SUBSTRING()

SELECT
  SUBSTRING(email FROM LOCATE('@', email)) AS domain
  COUNT(*) AS numusers
FROM tbl
GROUP BY domain
ORDER BY numusers DESC

В приведенном выше списке будут перечислены домены как @example.com.Чтобы снять @ используйте вместо:

SUBSTRING(email FROM LOCATE('@', email)+1) AS domain
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...