関連 -異なる ORDER BY を使用した PostgreSQL DISTINCT ON
テーブル購入があります (product_id、 purchase_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 の最新の購入製品 (完全な行) であり、その結果は purchase_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 |
したがって、行は同じですが、順序が間違っています。それを修正する方法はありますか?