select customer_id ,customer_name ,latest_order from ( select o.customer_id customer_id ,customer_name ,product_name latest_order ,rank()over(partition by customer_id order by order_date desc) rk from orders o join customers c on o.customer_id = c.customer_id join products p on o.product_id = p.product_id ) t where rk = 1 order by customer_id