0
点赞
收藏
分享

微信扫一扫

LeetCode(数据库)- 市场分析 II


题目链接:​​点击打开链接​​

题目大意:略。

解题思路:注意解决方案(1)通过时间比较来筛选排名的技巧;然而解决方案(2)在第 5 个测试用例中失败,但是不知道哪里思路有问题,望高手指出~

AC 代码

-- 解决方案(1)
select user_id seller_id, if(favorite_brand = item_brand, 'yes', 'no') 2nd_item_fav_brand
from users left join (
select o1.seller_id, item_brand
from orders o1
join orders o2
on o1.seller_id = o2.seller_id
join items i
on o1.item_id = i.item_id
group by o1.order_id
having sum(o1.order_date > o2.order_date) = 1
) tmp
on user_id = seller_id

-- 解决方案(2)
WITH t1 AS(SELECT user_id, order_date, i.item_id iItemId, o.item_id oItemId, ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY order_date) rw
FROM Users u LEFT JOIN Items i ON u.favorite_brand = i.item_brand LEFT JOIN Orders o ON u.user_id = o.seller_id),

t2 AS(SELECT user_id seller_id, IF(oItemId = iItemId, 'yes', 'no') 2nd_item_fav_brand FROM t1 WHERE rw = 2)

SELECT user_id seller_id, IFNULL(2nd_item_fav_brand, 'no') 2nd_item_fav_brand
FROM Users u LEFT JOIN t2 ON u.user_id = t2.seller_id


举报

相关推荐

0 条评论