with
t1 as(
    select
        order_id,
        customer_name,
        order_date,
        rank()over(partition by customer_id order by order_date desc) as drank
    from
        orders left join customers using(customer_id)
)
,
t2 as(
    select
        order_id,
        customer_name,
        order_date
    from
        t1
    where
        drank=1
)

select * from t2