4

我在 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。

4

3 回答 3

4

在 SQL 中你可以这样做:

SELECT SUBSTRING_INDEX(EMail.EMail, '@', -1) AS `Email Domain`, COUNT(*)
FROM EMail
GROUP BY SUBSTRING_INDEX(EMail.EMail, '@', -1)
ORDER BY COUNT(*) DESC;
于 2013-10-12T08:32:22.613 回答
3

MS Access 有两个特别有用的功能。你必须基本上这样做:

  • 提取出现在“@”字符之后的域部分。(Mid 和 InStr 函数对此有帮助。)
  • 将此与计数一起使用。

在 MS Access 中,您可以这样做:

Mid([Email],InStr([Email],"@")+1)这将为您提供域名。

像你一样计算这些使用计数。

参考:http ://www.techonthenet.com/access/functions/string/mid.php

现在,如果您需要用于 MSSQL 服务器的 SQL:

select SUBSTRING(email,(CHARINDEX('@',email)+1),1), count(*) from ...(rest of your query)
于 2013-06-15T06:21:20.143 回答
0

在一次采访中曾问过我这个类似的问题,我得到的解决方案是:

SELECT RIGHT(Email, LEN(Email)-CHARINDEX('@',Email)) AS Domain, COUNT(Email) AS Count 
FROM tblEmails
Group By RIGHT(Email, LEN(Email)-CHARINDEX('@',Email))
ORDER BY Count ASC;

希望这会对某人有所帮助。

于 2021-08-06T10:57:55.677 回答