我在 postgres 数据库中有一个表,其结构如下:
id | date | groupme1 | groupme2 | value
----------------------------------------
1 |
2 |
3 |
现在我想实现以下目标:
- 在 groupme1 和 groupme2 之后对表进行分组
- 获取每个组的值
- 但只有每个组组合的最后一个条目(在日期之后排序)
例子:
id | date | groupme1 | groupme2 | value
---------------------------------------
| | A | 1 | 4
| | A | 2 | 7
| | A | 3 | 3
| | B | 1 | 9
我目前的方法如下所示:
SELECT a.*
FROM table AS a
JOIN (SELECT max(id) AS id
FROM table
GROUP BY groupme1, groupme2) AS b
ON a.id = b.id
这种方法的问题:
- 它假定较高的日期具有较高的 id
- 需要很长时间
有没有更快更好的方法来做到这一点?窗口功能可以帮助解决这个问题吗?