I have data like:
id | user | index |
---|---|---|
1 | aaa | 0 |
2 | bbb | 0 |
3 | aaa | 1 |
4 | bbb | 1 |
5 | aaa | 2 |
6 | ccc | 0 |
How to get only the latest index of each user ?
Like this result
id | user | index |
---|---|---|
4 | bbb | 1 |
5 | aaa | 2 |
6 | ccc | 0 |
Advertisement
Answer
Looks like a simple DISTINCT ON
:
SELECT DISTINCT ON ("user") id, "user", "index" FROM mytab ORDER BY "user", "index" DESC;
This will return the first row per "user"
in the specified ordering, so the maximum "index"
.
It is a good idea to avoid column names that are reserved SQL keywords.