我试图通过一个简单的查询来展示公司中最畅销的产品,特别是排名前三的产品。 为了获得所有结果,我正在运行此查询
select product_name, (qty_on_order - qty_on_hand) as Sales
from products, product_inventory
where product_inventory.product_id = products.product_id
order by Sales Desc
这会返回除订购之外的所有内容,但我只需查看前三项,我使用了ROW_NUMBER但它没有给我我想要的结果。
答案 0 :(得分:1)
这是你想要的吗?
select *
from (select product_name, (qty_on_order - qty_on_hand) as Sales
from products join
product_inventory
on product_inventory.product_id = products.product_id
order by Sales Desc
) p
where rownum <= 3;
答案 1 :(得分:0)
你也可以通过使用等级函数来解决这个问题,这将更加容易。 请尝试以下查询
选择rnk,product_name,(qty_on_order - qty_on_hand)作为Sales 从 (选择rnk,product_name,(qty_on_order - qty_on_hand)作为Sales, rank()over(PARTITION BY product_name ORDER BY Sales DESC)为rnk 来自产品,product_inventory) 其中rnk&lt; = 3;