mysql - 我如何计算正在使用的相同电子邮件,但此 MySQL 数据库中的域不同?
问题描述
小数据分析师在这里。我有三个字段:clean_email、email 和 email_domain
干净的电子邮件:是域之前的信息。因此,如果电子邮件是 dataguy@yahoo.com,则该字段只会显示 dataguy
电子邮件是整个电子邮件:dataguy@yahoo.com
email_domain只是域:yahoo.com
我需要计算具有不同域的干净电子邮件的数量。我们注意到有些电子邮件可能是 dataguy@yahoo.com、dataguy@hotmail.com 或 dataguy@outlook.com。您注意到电子邮件相同,但域不同,因此我们正在尝试识别何时发生这种情况。此人的域总数为 3,我需要列出这些特定域。
我目前的查询是:
SELECT clean_email, email, COUNT(DISTINCT email_domain)
FROM email
GROUP BY clean_email, email
我尝试过以多种方式使用 COUNT,但它没有返回我需要的东西。它通常返回 1 行。
解决方案
您可以使用substring_index()
:
SELECT substring_index(email, '@', 1) as clean_email,
COUNT(DISTINCT substring_index(email, '@', -1))
FROM email
GROUP BY clean_email;
编辑:
如果您想要域,请使用GROUP_CONCAT()
:
SELECT substring_index(email, '@', 1) as clean_email,
COUNT(DISTINCT substring_index(email, '@', -1)),
GROUP_CONCAT(DISTINCT substring_index(email, '@', -1))
FROM email
GROUP BY clean_email
HAVING COUNT(DISTINCT substring_index(email, '@', -1)) > 1;
推荐阅读
- ffmpeg - 在单个命令 FFMPEG 中剪切音频并添加覆盖
- python - 在 tkinter 画布上挑选(pick_event)正确的艺术家?
- scala - Akka HTTP AuthenticationFailedRejection 原因
- javascript - 通过 eval 访问组件方法中的导入对象
- jmeter - 如何为 JMeter 添加更多间隔响应时间概述
- flutter - 颤动中滚动视图内的Listview
- api - Revit API,访问数据库,试图读取或写入受保护的内存
- amazon-product-api - 阅读亚马逊购物车
- python-3.x - 测试我是否有权在 Python3 的路径中创建文件夹?
- java - 是否可以在 Kotlin 中覆盖静态方法?