题目难度
困难
题目描述
写一个 SQL 查询确定每一个用户按日期顺序卖出的第二件商品的品牌是否是他们最喜爱的品牌。如果一个用户卖出少于两件商品,查询的结果是 no 。
题目保证没有一个用户在一天中卖出超过一件商品。


正确答案
leetcode中mysql无法使用窗口函数,所以在oracle环境下编译代码
select t1.user_id as "seller_id",
case when t1.favorite_brand=i.item_brand then 'yes' else 'no' end as "2nd_item_fav_brand"
from
(
SELECT u.user_id, u.favorite_brand, t.item_id
FROM Users u
LEFT JOIN
(
SELECT item_id, seller_id
FROM (
SELECT order_date, item_id, seller_id,
row_number() OVER (PARTITION BY seller_id ORDER BY order_date) AS rank
FROM Orders
) a
WHERE a.rank = 2
) t
ON u.user_id = t.seller_id) t1
LEFT JOIN Items i
on t1.item_id=i.item_id
order by "seller_id"
本文介绍了一个SQL查询挑战,旨在确定每个用户按日期顺序售出的第二件商品是否属于其最喜爱的品牌。若用户销售的商品不足两件,则结果为否。查询在Oracle环境下实现,避免了LeetCode平台的限制。
269

被折叠的 条评论
为什么被折叠?



