I need to select data grouped by external_id
and resolution
and ordered by timestamp
but limited to first two ids in each group. I don't know how to do the latter.
I tried to do something with simple query:
SELECT external_id, resolution, string_agg(id::text, ',') FROM some_table GROUP BY external_id, resolution ORDER BY timestamp LIMIT 2
but it's not enough - the limit is applicable to whole query.
Source
id | external_id | resolution | timestamp |
---|---|---|---|
1 | 1 | 1D | 1645941482 |
2 | 1 | 1D | 1645941481 |
3 | 1 | 1D | 1645941484 |
4 | 2 | 1D | 1645941483 |
5 | 2 | 1D | 1645941463 |
6 | 3 | 1D | 1645941183 |
7 | 3 | 1D | 1645941483 |
8 | 3 | 1D | 1646941483 |
8 | 3 | 1D | 1645741488 |
10 | 3 | 1D | 1645941490 |
11 | 1 | 3D | 1645941494 |
12 | 1 | 3D | 1645941491 |
13 | 2 | 3D | 1645941496 |
14 | 2 | 3D | 1645941490 |
15 | 2 | 3D | 1645941493 |
16 | 2 | 3D | 1645941491 |
17 | 3 | 3D | 1645941492 |
Expected result
external_id | resolution | ids |
---|---|---|
1 | 1D | 1,2 |
1 | 3D | 11,12 |
2 | 1D | 4,5 |
2 | 3D | 13,14 |
3 | 1D | 6,7 |
3 | 3D | 17 |