Oracle10g 在Oracle中查看前N个结果

Oracle10g 在Oracle中查看前N个结果,oracle10g,Oracle10g,我正在尝试做一个简单的查询,以显示该公司最畅销的产品,特别是前三名的产品。 要获取所有结果,我正在运行此查询 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 这将返回除ordered之外的所有内容,但我只需

我正在尝试做一个简单的查询,以显示该公司最畅销的产品,特别是前三名的产品。 要获取所有结果,我正在运行此查询

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
这将返回除ordered之外的所有内容,但我只需要查看前3项,我使用了ROW_编号,但它没有给出我想要的结果

这就是你想要的吗

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;

您也可以通过使用秩函数来解决这个问题,这将更加容易。 请尝试以下查询

选择rnk、产品名称、订单数量-作为销售的现有数量 从…起 选择rnk、产品名称、订单数量-作为销售的现有数量, 按产品、名称、订单、销售描述按rnk进行分区排名 来自产品、产品和库存
是的,就是它。你能解释一下为什么我必须使用这个方法吗?你需要一个子查询,因为where是在orderby之前处理的。因此,如果在同一个查询中执行这些操作,将对遇到的前三条记录进行排序,而不是对所有数据进行排序并获得前三条记录。