sql - 您如何找到每个用户的第一个事件和该事件的时间?
问题描述
用户 | 时间戳 | 事件 |
---|---|---|
1 | 2021-2-10 | 回答 |
1 | 2021-2-15 | 回答 |
2 | 2021-2-11 | 回答 |
2 | 2021-2-14 | 回答 |
2 | 2021-2-12 | 未答复 |
3 | 2021-2-16 | 下一个问题 |
3 | 2021-2-13 | 下一个问题 |
4 | 2021-2-12 | 下一个问题 |
4 | 2021-2-17 | 回答 |
解决方案
- 首先,您将根据时间戳和 id 为每一行创建排名
- 然后我们只选择rank = 1
WITH data as (
SELECT
*,
ROW_NUMBER () OVER(PARTITION BY USER ORDER BY TIMESTAMP) as rank_
FROM my_table
)
SELECT * from data where rank_ = 1
推荐阅读
- java - 无法从链中的任何提供商加载 AWS 凭证 - kinesis-kafka-connector
- regex - "\S+?@\S+" 和 "\S+@\S+" 在正则表达式中给出相同的输出
- angular - Angular 7 终于不起作用了
- php - 如何在 PHP REST 网站中实现 RS512 或更高的安全算法?
- rust - 接受 HashMap 和 BtreeMap 的 Rust 函数
- angular - 我应该先制作 Angular Web 项目,然后将其转换为移动设备吗?
- ruby-on-rails - Rails 5:设计可邀请的添加自定义字段
- makefile - 如何修改 configure 或 configure.ac 脚本以仅在指定位置查找二进制文件
- angularjs - 如何从角度降序开始
- c++ - 模板类成员与非成员模板函数的歧义