WITH last_order AS (
    SELECT 
        *,
        rank() over (partition by customer_id order by order_date DESC) AS rk
    FROM orders
),
last_order_1 AS(
    SELECT 
        order_id,
        customer_id,
        order_date
    FROM last_order
    WHERE rk=1
)
SELECT 
    a.order_id,
    b.customer_name,
    a.order_date
FROM last_order_1 AS a
LEFT JOIN customers AS b
ON a.customer_id=b.customer_id
ORDER BY b.customer_name;