sql - 用于根据条件查找几个最大日期的 SQL 查询
问题描述
我想从下表中找出每个用户的event_date
最大值user_role
。因此,基本上对于第一个用户 John Doe 来说,他只是一个 Explorer,而他的最后一个用户event_date
是在 2021-7-7。第二个 David Smith 既是开发者又是查看者,对于他来说,我想查询每个角色的最后/最大事件日期。并打印出event_category
and event_name
。
ID | 用户名 | USER_ROLE | EVENT_CATEGORY | 活动日期 | EVENT_NAME | |
1 | 约翰·多伊 | 探险家 | 条件警报 | 2021-07-07 04:00:13.000 | 运行警报 | |
2 | 约翰·多伊 | 探险家 | 询问 | 2021-07-07 04:00:12.000 | 运行查询 | |
3 | 约翰·多伊 | 探险家 | 条件警报 | 2021-07-07 04:00:11.000 | 检测警报漂移 | |
4 | 大卫史密斯 | 开发商 | 调度器 | 2021-07-06 10:20:25.000 | update_scheduled_plan | |
5 | 大卫史密斯 | 查看器 | 调度器 | 2021-07-06 10:20:25.000 | update_scheduled_plan | |
6 | 大卫史密斯 | 开发商 | 询问 | 2021-07-06 10:20:16.000 | 运行查询 | |
7 | 大卫史密斯 | 查看器 | 仪表板元素 | 2021-07-06 10:19:37.000 | update_dashboard_element |
结果应如下所示:
ID | 用户名 | USER_ROLE | EVENT_CATEGORY | 活动日期 | EVENT_NAME |
---|---|---|---|---|---|
1 | 约翰·多伊 | 探险家 | 条件警报 | 2021-07-07 04:00:13.000 | 运行警报 |
4 | 大卫史密斯 | 开发商 | 调度器 | 2021-07-06 10:20:25.000 | update_scheduled_plan |
5 | 大卫史密斯 | 查看器 | 调度器 | 2021-07-06 10:20:25.000 | update_scheduled_plan |
解决方案
这是另一种方法
SELECT
user_name,
user_role,
event_category,
event_date,
event_name
FROM myTable
QUALIFY ROW_NUMBER() over (
partition by
user_name,
user_role
order by
event_date DESC
) = 1
推荐阅读
- mongoose - 连接到集群并切换到另一个数据库
- kotlin - Recycler View 和 DialogFragment 苦苦挣扎(Kotlin)
- javascript - 多维数组上的数组映射
- javascript - 使用 SHEETJS 将 Excel 数据转换为 JSON
- algorithm - 建立一个历史最高得分排行榜
- php - 如果需要,如何添加新列
- reactjs - MUI 表分页:如何转到上一页?
- python - ImportError: DLL load failed while importing QtWebKit: Le module spécifié est introuvable
- sql - 如何在Postgres中将多列值转换为具有多行的单列
- c++ - 如果您知道地址,您可以访问另一个程序的堆栈/堆吗?