【发布时间】:2011-06-29 08:19:19
【问题描述】:
我有一个庞大的电子邮件表,想按域排序(并计算每个域中的 #)
示例输出:
@gmail.com = 1000
@aol.com = 790
@hotmail.com = 550
@somethingweird.com = 2
正则表达式将适用于从“@”匹配到字符串中最后一个字符的所有字符串。
有什么想法可以做到这一点吗?
【问题讨论】:
标签: sql email sorting group-by
我有一个庞大的电子邮件表,想按域排序(并计算每个域中的 #)
示例输出:
@gmail.com = 1000
@aol.com = 790
@hotmail.com = 550
@somethingweird.com = 2
正则表达式将适用于从“@”匹配到字符串中最后一个字符的所有字符串。
有什么想法可以做到这一点吗?
【问题讨论】:
标签: sql email sorting group-by
如果您可以更改您的设计,您可以尝试更改您在数据库中存储电子邮件地址的方式,或者添加一个额外的列。与必须对整个表进行表扫描以生成列表分组相比,这在索引方面的表现要好得多。
【讨论】:
如果它很大,那么您需要一个可扩展的解决方案。
添加计算列(或单独的域列)以拆分 @ 上的电子邮件地址并为其编制索引。
那么这是一个简单的 COUNT.. GROUP BY
【讨论】:
如果您使用 Oracle,您可以 GROUP BY regexp_substr(mail_column,'@.*')
【讨论】: