我有一个电子邮件ID列,用于存储完整的电子邮件ID。我希望得到基于域的最大数量,即@ gmail.com,@ xyz.com似乎在GROUP BY子句中我们不能应用任何通配符,只考虑完整电子邮件地址中的域。
对于Mysql
SELECT SUBSTRING_INDEX(EMail.EMail, '@', -1) AS `Email Domain`, COUNT(*)
FROM EMail
GROUP BY SUBSTRING_INDEX(EMail.EMail, '@', -1)
有数据示例
SELECT SUBSTRING_INDEX(EMail.EMail, '@', -1) AS `Email Domain`, COUNT(*)
FROM
(
select '[email protected]' as EMail
UNION
SELECT '[email protected]'
union
select '[email protected]'
union
select '[email protected]'
) as EMail
GROUP BY SUBSTRING_INDEX(EMail.EMail, '@', -1)
对于SQL服务器
SELECT RIGHT(Email, LEN(Email) - CHARINDEX('@', email)) Domain ,
COUNT(Email) EmailCount
FROM dbo.email
WHERE LEN(Email) > 0
GROUP BY RIGHT(Email, LEN(Email) - CHARINDEX('@', email))
ORDER BY EmailCount DESC