V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Jolly23
V2EX  ›  问与答

关于 SQL 语句查询“短信中每个人有多少个联系人”的写法,求教

  •  
  •   Jolly23 · 2016-11-24 09:51:36 +08:00 · 1838 次点击
    这是一个创建于 2911 天前的主题,其中的信息可能已经有所发展或是发生改变。

    数据库 Postgresql

    表描述:

    公司内部短信交流表,存有发件人 id ,接收人 id

    现在需要得到复杂网络数据:每个人有多少个联系过的人

    例表:

    sms_id | sender_id | receiver_id |

    1 | 1001 | 1008 |

    2 | 1003 | 1009 |

    3 | 1001 | 1009 |

    4 | 1002 | 1001 |

    5 | 1008 | 1001 |

    如何得到每个人联络过多少人的结果

    结果举例:

    sender_id | count

    1001 | 2

    1003 | 1

    1002 | 1

    1008 | 1

    10 条回复    2016-11-24 10:26:56 +08:00
    qiayue
        1
    qiayue  
       2016-11-24 09:54:14 +08:00
    你这个感觉是题目(作业?)而不是实际需求。
    Jolly23
        2
    Jolly23  
    OP
       2016-11-24 09:57:53 +08:00
    @qiayue 是需求,想写复杂网络的论文,然后自己列了一个单子,标明需要哪些数据,要从系统的 log 表提取数据分析一下,上面这问题就是其中的一组数据
    kxjhlele
        3
    kxjhlele  
       2016-11-24 09:58:52 +08:00
    count(distinct receiver_id)
    group by sender_id
    kxjhlele
        4
    kxjhlele  
       2016-11-24 10:01:03 +08:00
    一个 公司内部短信交流表,我个人感觉算不上复杂网络,要是运营商级别的话,还是有分析的意思。
    zjuhwc
        5
    zjuhwc  
       2016-11-24 10:01:34 +08:00 via iPhone
    select send_id, count(distinct reciver_id) from table group by send_id
    Jolly23
        6
    Jolly23  
    OP
       2016-11-24 10:08:45 +08:00
    @kxjhlele 非常感谢,实现了。嗯,规模跟运营商没法比,但也有 1.5w 员工和 15w 短信数据了,感觉还是有一定的分析的意义
    Jolly23
        7
    Jolly23  
    OP
       2016-11-24 10:08:59 +08:00
    @zjuhwc 非常感谢,可以实现,谢谢
    ipconfiger
        8
    ipconfiger  
       2016-11-24 10:11:51 +08:00
    这种玩具量级的基本也就是作业了, 其实现实中根本就不是这么做的......... 😂😂😂😂😂😂😂
    justfindu
        9
    justfindu  
       2016-11-24 10:11:54 +08:00
    其实你算错了 1001 有 3 个联系过的 = = 你考虑过么 1002 给 1001 发短信 也是联系
    wyj12501
        10
    wyj12501  
       2016-11-24 10:26:56 +08:00
    select send_id, count(1)
    from (select distinct send_id, receive_id from table)
    group by send_id;

    搜到一篇优化文章,可能有用
    https://www.oschina.net/translate/use-subqueries-to-count-distinct-50x-faster
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5744 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 02:54 · PVG 10:54 · LAX 18:54 · JFK 21:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.