所以我刚开始使用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。 谢谢你的帮助。
答案 0 :(得分:1)
一步一步(概念层面):
ISBN
在表格中出现的次数。实际查询如下所示:
自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