如何编写SQL统计Gmail及Yahoo邮箱员工数并按域名分组
现有SQL的问题
- 语法错误:IN子句中OR后直接接SELECT语句不符合SQL语法规范,无法正常执行
- 逻辑不符合需求:就算修正语法后,你的写法也只能返回Gmail和Yahoo邮箱的总员工数,无法按域名分类输出统计结果
正确实现方案
使用以下SQL即可得到你要求的输出格式:
SELECT SUBSTRING_INDEX(emailid, '@', -1) AS email, COUNT(*) AS count FROM employee WHERE emailid LIKE '%@gmail.com' OR emailid LIKE '%@yahoo.com' GROUP BY SUBSTRING_INDEX(emailid, '@', -1);
如果是PostgreSQL环境,将SUBSTRING_INDEX(emailid, '@', -1)替换为SPLIT_PART(emailid, '@', 2)即可。
逻辑说明
- 截取邮箱@符号后的域名作为统计分组的依据
- 直接在WHERE层过滤仅保留Gmail和Yahoo后缀的邮箱,避免多余子查询提升执行效率
- 按域名分组后统计每组的员工数量,输出结果和你要求的格式完全匹配
内容的提问来源于stack exchange,提问作者Sami Tarawneh
相关产品推荐
相关产品推荐

