zoukankan      html  css  js  c++  java
  • SQL 对邮箱数据的处理(分类统计)

    需求

    在许多业务场景中,需要处理用户的邮箱信息,为了探索不同邮箱的不同特定,便于对用户进行分类处理,需要对邮箱进行处理。

    前、后缀分离

    邮箱的格式大致是一致的 前缀@后缀 的样式。需要将邮箱进行分类。

    email
    123456@qq.com
    xiaoming@163.com

    明显看到他们前后缀通过 @ 复合连接,将他们分别分离成两列即可。

    select  email_list[0] as pre_email , email_list[1] as pro_email
    from (
        select split(email,'@') email_list
        from table a
    ) a
    

    结果是:

    pre_email pro_email
    123456 qq.com
    123456 163.com

    此时可以查看,究竟有那些邮箱的后缀,计数是多少,便于进行分类。

    select pro_email, count(*) cnt
    from table
    group by pro_email
    

    前缀的处理

    对于前缀,主要可以为以下几种类型

    • 手机号: 13579246810
    • 纯数字: 3123443242( 这种可能会与手机号重复,因此需要先筛选手机号)
    • 纯字母: qwert
    • 字母与数字: xiaoming1982
    • 其他: xiaoming_19

    分类代码如下:

    case when pre_email rlike "^(\+?86)?((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|161|166|198|199|(147))\d{8}$" then '手机号'
        when pre_email rlike '^\d+$' then '纯数字'
        when pre_email rlike '^[a-zA-Z]*$' then '纯字母'
        when pre_email rlike '^[a-z0-9A-Z]+$' then '字母与数字'
        else '其他' end as pre_flag
    

    后缀的处理

    后缀主要是公司,可以根据使用的场景,查看那些邮箱用的比较多,定义对应的后缀汉语名称。

    • 腾讯邮箱: qq.com, qq.vip.com, foxmail.com
    • 网易邮箱: 163.com , 126.com, yeah.cn
    • 电信邮箱: 139.com, 189.com

    分类代码如下:

    case when pro_email rlike '.*(163|126|yeah).*' then '网易邮箱'
        when pro_email rlike '.*(sina).*' then '新浪邮箱'
        when pro_email rlike '.*(qq|foxmail).*' then '腾讯邮箱'
        when pro_email rlike '.*(sohu).*' then '搜狐邮箱'
        when pro_email rlike '.*(139|189).*' then '电信邮箱'
        else 'others' end as pro_flag
    

    统计

    这样就可以处理成不同的组合。进行单独、交叉统计。

    -- 交叉统计
    select pre_flag, pro_flag, count(*) cnt
    from table
    group by pre_flag, pro_flag
    
  • 相关阅读:
    【C#】解析C#中LING的使用
    【Android】解析Paint类中Xfermode的使用
    【Android】解析Paint类中MaskFilter的使用
    【C#】C#对电子邮件的收发操作
    【Linux】linux/unix下telnet提示Escape character is '^]'的意义
    【Linux】CentOs中yum与rpm区别
    【C#】C#对Excel表的操作
    【SqlServer】解析SqlServer中的事务
    【Android】Android传感器
    【SqlServer】SqlServer的异常处理
  • 原文地址:https://www.cnblogs.com/heenhui2016/p/14096957.html
Copyright © 2011-2022 走看看