У меня есть таблица базы данных с:
id | date | position | name
--------------------------------------
1 | 2016-06-29 | 9 | Ben Smith
2 | 2016-06-29 | 1 | Ben Smith
3 | 2016-06-29 | 5 | Ben Smith
4 | 2016-06-29 | 6 | Ben Smith
5 | 2016-06-30 | 2 | Ben Smith
6 | 2016-06-30 | 2 | Tom Brown
7 | 2016-06-29 | 4 | Tom Brown
8 | 2016-06-30 | 2 | Tom Brown
9 | 2016-06-30 | 1 | Tom Brown
Как эффективно запросить таблицу, чтобы получить новый столбец с помощью array_agg ().
Я уже пробовал следующий запрос, однако он невероятно медленный, а также неправильный, поскольку он не группирует предыдущие_позиции по столбцу имени:
SELECT
j.*,
(SELECT array_agg(id) FROM jockeys j2 WHERE j2.id < j.id)
FROM jockeys j
Я ожидаю, что вывод таблицы будет выглядеть так
id | date | position | name | previous_positions
----------------------------------------------------------
1 | 2016-06-29 | 9 | Ben Smith | {}
2 | 2016-06-29 | 1 | Ben Smith | {9}
3 | 2016-06-29 | 5 | Ben Smith | {9,1}
4 | 2016-06-29 | 6 | Ben Smith | {9,1,5}
5 | 2016-06-30 | 2 | Ben Smith | {9,1,5,6}
6 | 2016-06-30 | 2 | Tom Brown | {}
7 | 2016-06-29 | 4 | Tom Brown | {2}
8 | 2016-06-30 | 2 | Tom Brown | {2,4}
9 | 2016-06-30 | 1 | Tom Brown | {2,4,2}