2016-09-19 3 views
0

Я работаю над скриптом, чтобы определить, какие поставщики электронной почты в нашей базе данных являются самыми популярными. URL-ссылки - это имя таблицы, а «contact_email» - контактный адрес электронной почты, связанный со ссылкой.Группа MySQL по подсчету Подстрока

Я написал следующий запрос MySQL

SELECT 
url_links.contact_email,count(url_links.contact_email) 
FROM 
url_links 
group by contact_email order by count(url_links.contact_email) DESC 

Этот запрос возвращает все сообщения электронной почты и подсчета лица, подавшего объявление. То, что я хотел бы сделать, это изменить скрипт MySQL, чтобы он подсчитал весь провайдер. т.е. Gmail.com, Yahoo.com, Hotmail.com и т. д.

Я мог бы прочитать весь этот массив в PHP и «взорваться» на знаке @ и сгруппировать его таким образом, однако мне любопытно, если сообщество знает, как изменить этот скрипт, чтобы вместо подсчета каждого адреса электронной почты он возвращал счет всех адресов электронной почты в Gmail, Yahoo и т. д. в группе по

Aka a 'Group By Substring', где все элементы будут сгруппированы всем после знака «@».

Спасибо!

ответ

1

вы можете группы и подсчитывают:

right(url_links.contact_email, length(url_links.contact_email)-INSTR(url_links.contact_email, '@')) 

что-то, как это должно работать:

SELECT 
right(url_links.contact_email, length(url_links.contact_email)-INSTR(url_links.contact_email, '@')), count(right(url_links.contact_email, length(url_links.contact_email)-INSTR(url_links.contact_email, '@'))) 
FROM 
url_links 
group by right(url_links.contact_email, length(url_links.contact_email)-INSTR(url_links.contact_email, '@')) order by count(right(url_links.contact_email, length(url_links.contact_email)-INSTR(url_links.contact_email, '@'))) DESC 
+0

спасибо Сезара. Я попробовал ваш скрипт, однако он вернул тот же результат, что и мой скрипт. Один результат по электронной почте вместо одного результата для одного поставщика. – Viktor

+0

Привет, Виктор, я обновил свой ответ, я группировал (и выбирал) неправильное поле «url_links.contact_email» – Cesar

+0

Это сработало! Могу ли я задать вам бонусный вопрос? Как бы вы добавили дополнительное поле MySQL, которое называется «процентом», т. Е. Оно принимает полный счет всей базы данных и выражает его как процент от «списка» у данного провайдера? – Viktor

Смежные вопросы