使用SQL sort / group by匹配类似的结束字符串

时间:2011-02-17 19:25:00

标签: sql email sorting group-by

我有一个庞大的电子邮件表格,并希望按域排序(并计算每个域中的#)

示例输出:

  

@ gmail.com = 1000

     

@ aol.com = 790

     

@ hotmail.com = 550

     

@ somethingweird.com = 2

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

我有什么想法可以做到这一点?

3 个答案:

答案 0 :(得分:0)

如果您可以更改设计,可以尝试更改在数据库中存储电子邮件地址的方式,或添加其他列。这将通过索引执行比在整个表中执行表扫描以生成列表分组要好得多。

答案 1 :(得分:0)

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

添加计算列(或单独的域列)以拆分@上的电子邮件地址并将其编入索引。

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

答案 2 :(得分:0)

如果您使用Oracle,则可以GROUP BY regexp_substr(mail_column,'@.*')