鸡西网站制作/网站搭建教程
每件商品的最新订单
题目分析:题目要求找到每件商品的最新订单,但是这个最新是按日来算的,所以可能会当日存在两个订单,那么如果使用order by和limit就可能不行,因此需要窗口函数dense_rank()
先找出每件商品的最新订单
select product_id,order_id,order_date from (
select product_id,order_id,order_date,dense_rank() over(partition by product_id order by order_date desc) dk from Orders) F1 where dk = 1
然后和Product表进行连接即可
select P.product_name,F2.product_id,F2.order_id,F2.order_date from Products P inner join (
select product_id,order_id,order_date from (
select product_id,order_id,order_date,dense_rank() over(partition by product_id order by order_date desc) dk from Orders) F1 where dk = 1) F2 on P.product_id = F2.product_id order by P.product_name,P.product_id,order_id;
提交结果如下