如何从计数返回中获取最高计数列

时间:2015-12-08 22:47:35

标签: sql oracle11g

所以我刚开始使用SQL,我有一个非常简单的问题,我无法弄清楚。我正在研究练习数据库,我想拿一张已订购的书籍小桌子,找到订购最多的书。所以我开始是这样的:

select ISBN, count(ISBN)
from orderitems
group by ISBN;

因此,这给了我2个ISBN的归还以及ISBN在订单中的次数。从这里我只想采用最高级别的ISBN并将其传递给查询以外。我认为找到最有序的ISBN的最好方法是将count函数嵌套在max函数中,但我想它并不像那样工作,因为当我尝试这样做时,我一直收到错误:< / p>

select ISBN, max(count(ISBN))
from orderitems
group by ISBN;

所以我的问题是使用max和count函数和子查询编写此查询的最有效方法是什么,所以我将获得返回到我的外部查询的最有序的ISBN。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

一步一步(概念层面):

  1. 计算每个ISBN在表格中出现的次数。
  2. 使用在步骤1中计算的值
  3. 以降序方式订购数据
  4. 将输出限制为仅返回第一行。
  5. 实际查询如下所示:

    自Oracle 12c 以来,可以使用FETCH FIRST ... ROWS ONLY语法

    完成此操作
    SELECT
      ISBN
    FROM
      orderitems
    GROUP BY ISBN
    ORDER BY COUNT(ISBN) DESC
    FETCH FIRST 1 ROWS ONLY
    

    对于Oracle版本 12c之前,您可以使用ROWNUM伪列

    SELECT *
    FROM (
      SELECT
        ISBN
      FROM
        orderitems
      GROUP BY ISBN
      ORDER BY COUNT(ISBN) DESC
      )
    WHERE rownum = 1