我有一个电子邮件 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 'tuhin@gmail.com' as EMail
UNION
SELECT 'tuhin@yahoo.com'
union
select 'abc@xyz.com'
union
select 'hin@gmail.com'
) 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
关于mysql - SQL 查询以查找具有相同电子邮件域的最大计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50963899/