sql - Redshift:与其他用户打开 2 种聊天类型的用户计数
问题描述
以下是我的数据集的片段:
_id
是聊天线程的 ID。creatorid
是创建聊天线程的用户的 ID。partnerid
是接收聊天消息的用户的 ID。type
是聊天的类型。
我有兴趣查找(either offer_related or request_related) and direct
与其他用户进行 2 种聊天的用户数量。
我尝试了分区creatorid
和分组,partnerid
但也包括其他不受欢迎的情况。
有人知道这个问题的解决方案吗?我正在使用 Amazon Redshift。
具有“offer_related”和“request_related”类型的聊天称为工作聊天。
因此,目标是找到与同一个人打开 1 个工作聊天和 1 个直接聊天的人。
例如,
用户 A 与 B 进行了 offer_related 聊天
用户 A 与 B 直接聊天
用户 B 与 C 直接聊天
用户 B 与 D 进行了 offer_related 聊天。
因此,只有用户 A 计入答案,因为他与同一用户 B 有 1 次工作聊天(offer_related)和 1 次直接聊天。
解决方案
获取所有请求类型的聊天,按创建者和类型分组 - 然后仅保留具有超过 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
在分组子句中添加。
推荐阅读
- javascript - 使用 PHP/MySQL、Javascript、Json 生成基于一个月和不同年份销售额的组合图
- scikit-learn - Pytorch 如何规范化关于先前数据集的新记录?
- reactjs - 在 react.js 中提交带有输入字段验证的表单
- excel - 跨多个工作表的 Excel VBA SUMIF
- android - 在后台更新位置时出错
- c# - 如何从datagridview插入所有数据以访问数据库
- sql-server - 将列中的值更改为从字符串更改为 Insery 上的数字
- php - 如何在 PHP 中读取自定义 HTTP 标头
- python - Python多处理:如果返回时间过长,则终止进程
- machine-learning - 如何估计大型数据集的准确性?