Jolly23
V2EX  ›  问与答

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

  •  
  •   Jolly23 · Nov 24, 2016 · 2540 views
    This topic created in 3482 days ago, the information mentioned may be changed or developed.

    数据库 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 replies    2016-11-24 10:26:56 +08:00
    qiayue
        1
    qiayue  
    PRO
       Nov 24, 2016
    你这个感觉是题目(作业?)而不是实际需求。
    Jolly23
        2
    Jolly23  
    OP
       Nov 24, 2016
    @qiayue 是需求,想写复杂网络的论文,然后自己列了一个单子,标明需要哪些数据,要从系统的 log 表提取数据分析一下,上面这问题就是其中的一组数据
    kxjhlele
        3
    kxjhlele  
       Nov 24, 2016
    count(distinct receiver_id)
    group by sender_id
    kxjhlele
        4
    kxjhlele  
       Nov 24, 2016
    一个 公司内部短信交流表,我个人感觉算不上复杂网络,要是运营商级别的话,还是有分析的意思。
    zjuhwc
        5
    zjuhwc  
       Nov 24, 2016 via iPhone
    select send_id, count(distinct reciver_id) from table group by send_id
    Jolly23
        6
    Jolly23  
    OP
       Nov 24, 2016
    @kxjhlele 非常感谢,实现了。嗯,规模跟运营商没法比,但也有 1.5w 员工和 15w 短信数据了,感觉还是有一定的分析的意义
    Jolly23
        7
    Jolly23  
    OP
       Nov 24, 2016
    @zjuhwc 非常感谢,可以实现,谢谢
    ipconfiger
        8
    ipconfiger  
       Nov 24, 2016
    这种玩具量级的基本也就是作业了, 其实现实中根本就不是这么做的......... 😂😂😂😂😂😂😂
    justfindu
        9
    justfindu  
       Nov 24, 2016
    其实你算错了 1001 有 3 个联系过的 = = 你考虑过么 1002 给 1001 发短信 也是联系
    wyj12501
        10
    wyj12501  
       Nov 24, 2016
    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
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3102 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 13:51 · PVG 21:51 · LAX 06:51 · JFK 09:51
    ♥ Do have faith in what you're doing.