MySQL Group By Count Substring

时间:2016-09-19 15:28:33

标签: php mysql

我正在制作一个脚本,以确定我们数据库中哪些电子邮件提供商最受欢迎。 URL链接是表的名称,'contact_email'是与链接关联的联系电子邮件地址。

我写了以下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 个答案:

答案 0 :(得分: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