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

标签 mysql sql

我有一个电子邮件 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/

相关文章:

javascript - 访问文件数据时出现问题

MYSQL 内连接与 select 语句

mysql - 获取 SQL 结果中的行号

c# - 如何在 C# 中为 IN 子句编写 sql 查询文本

c# - 将 int 视为字符串的 sql 查询 - 问题?

mysql - 在 SQL 查询中正确转义 QUOTE 字符

mysql - 从 C# 调用 mysql 存储过程?

SQL 仅选择不包含相关表中使用的 ID 的行

sql - 使用 postgresql 的 WITH CTE 查询

sql - 返回具有给定属性在表中出现的各种实例的行