sql - 尝试查找总唯一出现次数列并返回该列中的最大值
问题描述
我正在尝试查找每个用户会话的“给用户的消息”事件的发生次数,并返回每个用户的最大会话数。所以这意味着我想跟踪有多少用户会话有“给用户的消息”事件,但如果这有意义的话,我想消除在同一个会话中发生的重复项?
我也在寻找所有用户的总用户会话
我试图找到这些值没有成功。我的桌子看起来像这样:
user_id | event | user_session_id
1 | message to user | 1
1 | message to user | 1
1 | message from user | 1
1 | message to user | 1
1 | message from user | 2
1 | message to user | 2
1 | message to user | 3
2 | message to user | 1
2 | message to user | 1
2 | message from user | 1
2 | message to user | 1
2 | message from user | 2
2 | message to user | 2
我的预期输出将是这样的:
user_id | event | user_session_id | max_session_by_user | total_sessions
1 | message to user | 1 | 3 | 5
1 | message to user | 2 | 3 | 5
1 | message to user | 3 | 3 | 5
2 | message to user | 1 | 2 | 5
2 | message to user | 2 | 2 | 5
谢谢
编辑:我添加了更多关于我在寻找事件列时的意思的说明
解决方案
首先过滤所需的事件并消除重复项。
然后使用窗口函数添加计数。
SELECT user_id, event, user_session_id,
count(*) OVER (PARTITION BY user_id) AS max_session_by_user,
count(*) OVER () AS total_sessions
FROM (SELECT DISTINCT user_id, event, user_session_id
FROM events_table
WHERE event = 'message to user') AS q;
推荐阅读
- google-app-maker - 从相关值填充多选小部件名称
- numpy - 更高效的fillna(numpy)
- node.js - TypeError:无法读取未定义的属性“comment_text”
- r - 提取具有不同日期和行号的股票价格
- monaco-editor - 如何在 Monaco 编辑器中的 JavaScript 中强制执行函数签名
- testing - 如何访问正在运行的测试信息(屏幕截图模式参数)
- ios - ios中具有共同特征的自定义单元格
- javascript - 移相器拖放多个文本项
- angular - 找不到模块 'rxjs/internal/Observable'
- java - 在 JVM 中记录和跟踪代理创建