【发布时间】:2020-08-22 13:39:06
【问题描述】:
我有一个表格,其中的数据是这样的
映射关系
1 个 task_id 映射到多个 task_detail_id(1 到多个)
Task_detail_id Task_id Creation_date
1 20 2020-05-02 20:28:23.354
2 21 2020-05-02 20:28:23.354
3 22 2020-05-02 19:28:23.354
4 22 2020-05-02 18:28:23.354
5 22 2020-05-02 17:28:23.354
6 22 2020-05-02 16:28:23.354
7 22 2020-05-02 15:28:23.354
8 23 2020-05-02 10:28:23.354
9 24 2020-05-02 09:28:23.354
10 24 2020-05-02 08:28:23.354
11 24 2020-05-02 07:28:23.354
我想要的是遍历表并获取记录,就好像 相同的 task_id 存在超过 2 次,然后获取该 task_id 的前 2 个(最新)记录
样本输出
Task_detail_id Task_id Creation_date
1 20 2020-05-02 20:28:23.354
2 21 2020-05-02 20:28:23.354
3 22 2020-05-02 19:28:23.354
4 22 2020-05-02 18:28:23.354
8 23 2020-05-02 10:28:23.354
9 24 2020-05-02 09:28:23.354
10 24 2020-05-02 08:28:23.354
【问题讨论】:
-
只标记您使用的数据库。
-
我正在使用 Postgresql
-
向我们展示一些示例表数据和预期结果 - 都是格式化文本,而不是图像。 (minimal reproducible example)
-
请看一下
-
为什么 task_ids 20 和 21 在输出中?它们只存在一次,而不是“超过 2 次”。
标签: sql postgresql greatest-n-per-group