【发布时间】:2020-06-22 20:13:39
【问题描述】:
我有一个表“UserData”,其中包含以下信息:
User Date DateTime Input
1 8/4/2019 8/4/2019 0:55 Request
1 8/4/2019 8/4/2019 0:56 Ticket
1 8/4/2019 8/4/2019 2:08 Submit
1 8/4/2019 8/4/2019 2:21 Submit
2 8/4/2019 8/4/2019 13:10 Submit
2 8/20/2019 8/20/2019 2:10 Ticket
2 8/20/2019 8/20/2019 2:12 Ticket
2 8/20/2019 8/20/2019 2:13 Request
3 8/20/2019 8/20/2019 2:15 Request
3 8/19/2019 8/19/2019 2:16 Ticket
3 6/12/2020 6/12/2020 2:22 Submit
3 6/12/2020 6/12/2020 2:26 Submit
3 6/12/2020 6/12/2020 3:26 Ticket
我希望返回每个用户的第一个输入(基于时间),但仅在最新的一天。所以我的输出会是这样的:
User DateTime Input
1 8/4/2019 0:55 Request
2 8/20/2019 2:10 Ticket
3 6/12/2020 2:22 Submit
我想我需要为每个日期分配一个排名,但不确定从哪里开始。
【问题讨论】:
-
您的 Postgres 版本和基本数据分布对于确定最佳解决方案至关重要。总共有多少行,有多少不同的用户,大致?另外,是否有一个单独的
users表,每个相关用户一行?
标签: sql postgresql date greatest-n-per-group window-functions