Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于显示电子邮件列中域名总数的SQL_Sql_Ms Access_Ms Access 2013 - Fatal编程技术网

用于显示电子邮件列中域名总数的SQL

用于显示电子邮件列中域名总数的SQL,sql,ms-access,ms-access-2013,Sql,Ms Access,Ms Access 2013,我在MS Access表中有一个电子邮件列(duplicates ok),我想从中显示所有域名(来自电子邮件的域部分)及其在MS Access中的计数 表: 我有SQL: SELECT EMail.EMail, COUNT(*) FROM EMail GROUP BY EMail.EMail ORDER BY COUNT(*) DESC; 但它给出了基于电子邮件的结果。比如: EMail Expr1001 XXX@googlemail.com 4 YYY@googlemail.com

我在MS Access表中有一个电子邮件列(duplicates ok),我想从中显示所有域名(来自电子邮件的域部分)及其在MS Access中的计数

表:

我有SQL:

SELECT EMail.EMail, COUNT(*)
FROM EMail
GROUP BY EMail.EMail
ORDER BY COUNT(*) DESC;
但它给出了基于电子邮件的结果。比如:

EMail   Expr1001
XXX@googlemail.com  4
YYY@googlemail.com  3
AA@argpub.com   2
等等

如何显示域及其总数?比如:

gmail.com 10
yahoo.com 5
yahoo.co.in 3
等等


我正在使用Access 2013。

MS Access有两个功能,特别是帮助。你必须基本上做到这一点:

  • 提取出现在“@”字符后面的域部分。(Mid和InStr函数对此有帮助。)
  • 将此与计数一起使用
在MS Access中,您可以执行以下操作:

Mid([Email]、InStr([Email]、“@”)+1)
将为您提供域名

要计算这些,请使用正常计数

参考:

现在,如果您需要MSSQL server的SQL:

select SUBSTRING(email,(CHARINDEX('@',email)+1),1), count(*) from ...(rest of your query)

在SQL中,您可以执行以下操作:

SELECT SUBSTRING_INDEX(EMail.EMail, '@', -1) AS `Email Domain`, COUNT(*)
FROM EMail
GROUP BY SUBSTRING_INDEX(EMail.EMail, '@', -1)
ORDER BY COUNT(*) DESC;