SQL查询以查找具有相同电子邮件域的最大计数

sou*_*ikc 0 mysql sql

我有一个电子邮件ID列,用于存储完整的电子邮件ID.我希望得到基于域的最大数量,即@ gmail.com,@ xyz.com似乎在GROUP BY子句中我们不能应用任何通配符,只考虑完整电子邮件地址中的域.

Zay*_*hin 6

对于Mysql

SELECT SUBSTRING_INDEX(EMail.EMail, '@', -1) AS `Email Domain`, COUNT(*)
FROM EMail
GROUP BY SUBSTRING_INDEX(EMail.EMail, '@', -1)
Run Code Online (Sandbox Code Playgroud)

有数据示例

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)
Run Code Online (Sandbox Code Playgroud)

对于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
Run Code Online (Sandbox Code Playgroud)