题103:
根据下表写一个SQL 语句, 找到每件商品的最新订单(可能有多个),返回的结果以 product_name 升序排列, 如果有排序相同, 再以 product_id 升序排列, 如果还有排序相同, 再以 order_id 升序排列。
其中:
- Orders表:order_id 是该表主键,该表包含消费者customer_id产生的订单,不会有商品被相同的用户在一天内下单超过一次;
- Products表:product_id 是该表主键,该表包含所有商品的信息。
解题思路:
(1)首先红区每个产品对应的最新一天;
(2)把(1)获得的临时表为where子句的参数,进行限制即可;
(3)排序。
select p.product_name, o.product_id, o.order_id, o.order_date
from Products p
join Orders o on p.product_id = o.product_id
where (o.product_id, o.order_date) in (
select product_id, max(order_date) order_date
from Orders
group by product_id
)
order by p.product_name, o.product_id, o.order_id;