Selecting rows ordered by some column and distinct on another

前端 未结 3 1070
天命终不由人
天命终不由人 2020-12-01 07:57

Related to - PostgreSQL DISTINCT ON with different ORDER BY

I have table purchases (product_id, purchased_at, address_id)

Sample data:

| id |         


        
3条回答
  •  心在旅途
    2020-12-01 08:32

    Quite a clear question :)

    SELECT t1.* FROM purchases t1
    LEFT JOIN purchases t2
    ON t1.address_id = t2.address_id AND t1.purchased_at < t2.purchased_at
    WHERE t2.purchased_at IS NULL
    ORDER BY t1.purchased_at DESC
    

    And most likely a faster approach:

    SELECT t1.* FROM purchases t1
    JOIN (
        SELECT address_id, max(purchased_at) max_purchased_at
        FROM purchases
        GROUP BY address_id
    ) t2
    ON t1.address_id = t2.address_id AND t1.purchased_at = t2.max_purchased_at
    ORDER BY t1.purchased_at DESC
    

提交回复
热议问题