Относится к - PostgreSQL DISTINCT ON с другим ORDER BY
У меня есть таблица Purchases (product_id, Purchased_at, address_id)
Пример данных:
| id | product_id | purchased_at | address_id |
| 1 | 2 | 20 Mar 2012 21:01 | 1 |
| 2 | 2 | 20 Mar 2012 21:33 | 1 |
| 3 | 2 | 20 Mar 2012 21:39 | 2 |
| 4 | 2 | 20 Mar 2012 21:48 | 2 |
Ожидаемый результат — самый последний закупленный продукт (полная строка) для каждого address_id, и этот результат должен быть отсортирован в порядке убывания по полю закупки_at:
| id | product_id | purchased_at | address_id |
| 4 | 2 | 20 Mar 2012 21:48 | 2 |
| 2 | 2 | 20 Mar 2012 21:33 | 1 |
Использование запроса:
SELECT DISTINCT ON (address_id) purchases.address_id, purchases.*
FROM "purchases"
WHERE "purchases"."product_id" = 2
ORDER BY purchases.address_id ASC, purchases.purchased_at DESC
Я получаю:
| id | product_id | purchased_at | address_id |
| 2 | 2 | 20 Mar 2012 21:33 | 1 |
| 4 | 2 | 20 Mar 2012 21:48 | 2 |
Таким образом, строки одинаковы, но порядок неправильный . Как это исправить?