# 子查询
select
     o.customer_id,
     customer_name,
     product_name as latest_order
 from
     orders o
     join customers c on o.customer_id = c.customer_id
     join products p on o.product_id = p.product_id
 where
     (o.customer_id, order_date) in (
         select
             customer_id,
             max(order_date)
         from orders
         group by customer_id
     )
 order by o.customer_id asc

# 窗口函数
select 
    customer_id,
    customer_name,
    latest_order
from (
    select 
        o.customer_id,
        customer_name,
        product_name as latest_order,
        row_number() over(partition by o.customer_id order by order_date desc) as rk
    from
        orders o
        join customers c on o.customer_id = c.customer_id
        join products p on o.product_id = p.product_id
    group by o.customer_id, customer_name, product_name, order_date
)as a1
where rk = 1
order by customer_id asc