Oracle SQL Developer如何获得最高价值

时间:2015-01-05 17:52:21

标签: sql oracle

我从最大重复次序到最小重复次序。但我只想获得最高价值。重复次数最多的值。

这是代码:

 SELECT foreign_key
 FROM all_person
 GROUP BY foreign_key
 ORDER BY COUNT(*) DESC;

这就是我得到的:

foreign_key
--------------
        10 
         9 
         2 
         4 
         8 
         3 
         7 
         6 
         1 
         5

我只想获得值10(在此示例中)。 我看到很多时候人们使用LIMIT,但是如果我像这样使用LIMIT,我会得到错误:

ORDER BY COUNT(*) DESC LIMIT 1;

这是错误:

SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"

3 个答案:

答案 0 :(得分:2)

您可以在where子句中使用ROWNUM:

SELECT foreign_key
FROM
(
 SELECT foreign_key
 FROM all_person
 GROUP BY foreign_key
 ORDER BY COUNT(*) DESC
)
WHERE ROWNUM = 1;

答案 1 :(得分:2)

rownum方法已经被描述过了,它的工作原理很正常。在Oracle 12+中,您可以使用fetch first 1 row only

SELECT foreign_key
FROM all_person
GROUP BY foreign_key
ORDER BY COUNT(*) DESC
FETCH FIRST 1 ROW ONLY;

您没有指定您正在使用的Oracle版本。如果是最新的,那么这将有效。这也是标准的,适用于其他一些数据库。

答案 2 :(得分:1)

您可以使用ROWNUM

执行此操作
SELECT foreign_key FROM (
   SELECT foreign_key
     FROM all_person
    GROUP BY foreign_key
    ORDER BY COUNT(*) DESC
) WHERE rownum = 1;

这是最快的方法,但可能无法用于更复杂的查询。