2011-02-17 30 views
2

我有电子邮件的大量表结束与SQL分页/分组串并想通过域排序(和计数在每个域中#)匹配同样由

输出示例:

@ gmail.com = 1000

@ aol.com = 790

@ hotmail.com = 550

@ somethingweird.c om = 2

正则表达式适用于从“@”到字符串中最后一个字符匹配的所有字符串。

任何想法我可以做到这一点?

+0

? – 2011-02-17 19:27:38

回答

0

如果你可以改变你的设计,你可以尝试改变你在数据库中存储电子邮件地址的方式,或者添加一个额外的列。与索引相比,这将会更好地执行,而不必通过整个表执行表扫描来生成列表分组。

0

如果它很大,那么您需要一个可扩展的解决方案。

添加一个计算列(或单独的域列)来分割@上的电子邮件地址并对其进行索引。

然后,它是一个简单的COUNT .. GROUP BY

0

如果你使用Oracle,你可以GROUP BY regexp_substr(mail_column,'@.*')什么是您使用RDBMS