Sql 如何在ORACLE中获得第十高的成本?

Sql 如何在ORACLE中获得第十高的成本?,sql,oracle,top-n,Sql,Oracle,Top N,我有一个表产品和一列标准成本,我想得到产品的标准成本,它位于第十位。到目前为止我试过了 SELECT t1.* FROM (SELECT STANDARD_COST FROM OT.PRODUCTS ORDER BY STANDARD_COST DESC) t1 WHERE ROWNUM=1 ORDER BY t1.STANDARD_COST ASC; 但当我先对内部查询进行降序排序,然后在ORACLE中进行升序排序时,它给了我相同的值。我的查询有什么问题

我有一个表产品和一列标准成本,我想得到产品的标准成本,它位于第十位。到目前为止我试过了

SELECT t1.* 
FROM (SELECT  STANDARD_COST 
      FROM OT.PRODUCTS 
      ORDER BY STANDARD_COST DESC) t1  
WHERE ROWNUM=1 
ORDER BY t1.STANDARD_COST ASC;

但当我先对内部查询进行降序排序,然后在ORACLE中进行升序排序时,它给了我相同的值。我的查询有什么问题?

有任何方法可以找到第n个最高成本

SELECT T1.STANDARD_COST
FROM (
    SELECT STANDARD_COST, DENSE_RANK() OVER (ORDER BY STANDARD_COST DESC) nth_highest_cost 
    FROM PRODUCTS
) T1
WHERE nth_highest_cost = 10;
您可以从以下参考中查找其他方法:

您可以使用n_值分析函数

Select * from
(select t.*, DISTINCT NTH_VALUE(t.standard_cost,10)
       OVER (ORDER BY t.standard_cost desc
       RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
       AS TENTH_HIGHEST
FROM PRODUCTS t)
Where standard_cost = tenth_highest;

干杯

我得到了如下错误:[错误]执行5:13:ORA-00923:FROM关键字未找到Expected的位置让我检查一下,您是否也尝试过使用表别名。我已经添加了T1it,它再次向我显示了*附近的相同错误,密集等级