Oracle SQL 开发人员如何获得最高价值

Oracle SQL Developer how to get top value

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

这是代码:

 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"

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

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

您可以使用 ROWNUM:

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

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

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 版本。如果是最新的,那么这将起作用。这也是标准的,适用于其他一些数据库。