首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >红移:与其他用户开放2种类型聊天的用户数量

红移:与其他用户开放2种类型聊天的用户数量
EN

Stack Overflow用户
提问于 2018-08-02 05:53:29
回答 2查看 42关注 0票数 0

以下是我的数据集的一个片段:

  • _id是聊天线程的ID。
  • creatorid是创建聊天线程的用户的ID。
  • partnerid是接收聊天消息的用户的ID。
  • type是聊天的类型。

我感兴趣的是,与另一个用户有2种类型的(either offer_related or request_related) and direct聊天的用户数量。

我尝试使用creatorid进行分区,并按partnerid进行分组,但这也包括其他不理想的情况。

有人知道解决这个问题的办法吗?我正在使用亚马逊红移。

具有'offer_related‘和'request_related’类型的聊天被称为工作聊天。

因此,我们的目标是找到与同一个人进行1次工作聊天和1次直接聊天的人。

例如,

  • 用户A与B进行offer_related聊天
  • 用户A与B直接聊天
  • 用户B与C直接聊天
  • 用户B与D进行offer_related聊天。

因此,只有用户A才能计算出答案,因为他有一个工作聊天(Offer_related)和一个与同一个用户B直接聊天。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-02 06:27:25

获取所有被请求类型的聊天,按创建者和类型分组,然后只保留那些有1种以上类型的聊天,最后在结果集中计数行:

代码语言:javascript
复制
SELECT COUNT(*) FROM 
  (SELECT creatorid FROM chats 
  WHERE type IN ('direct', 'offer_related', 'request_related') 
  GROUP BY creatorid, partnerid, type 
  HAVING COUNT(type) > 1) AS tmp

更新

在分组子句中添加partnerid

票数 1
EN

Stack Overflow用户

发布于 2018-08-02 11:26:30

我相信你想:

代码语言:javascript
复制
SELECT COUNT(*) 
FROM (SELECT creatorid, parnerid, COUNT(*) as num_chats
      FROM chats 
      WHERE type IN ('direct', 'offer_related', 'request_related') 
      GROUP BY creatorid, partnerid 
      HAVING MIN(type) <> MAX(type)  -- check that there is more than 1
     ) cp;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51646396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档