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

_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才能计算出答案,因为他有一个工作聊天(Offer_related)和一个与同一个用户B直接聊天。
发布于 2018-08-02 06:27:25
获取所有被请求类型的聊天,按创建者和类型分组,然后只保留那些有1种以上类型的聊天,最后在结果集中计数行:
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。
发布于 2018-08-02 11:26:30
我相信你想:
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;https://stackoverflow.com/questions/51646396
复制相似问题