gpt4 book ai didi

sql - 在一个 select 语句中使用 group by、order by 和 limit

转载 作者:行者123 更新时间:2023-12-02 04:26:53 27 4
gpt4 key购买 nike

我似乎想不出一种方法来回答以下查询。我正在使用 SQL Developer

我需要找出 2007 年申请人总数排名前十的机构是什么。这是我尝试过的命令:

select i.instid, i.instname, i.insttype,sum(f.TotalNumberApplicants)as TotalNumberofApplicants, f.year 
from INSTITUTION_DIM i, FACT f
where i.INSTID = f.INSTID
and year = 2007
order by f.TOTALNUMBERAPPLICANTS
group by i.INSTID,i.INSTNAME,i.INSTTYPE,f.YEAR
limit 10;

我一直收到这个错误:

ORA-00933: SQL command not properly ended 00933. 00000 - "SQL command not properly ended" *Cause:
*Action: Error at Line: 10 Column: 1

有什么想法吗?

最佳答案

这里可能有些困惑。也许值得花一些时间来澄清这一点?

今天,甲骨文公司同时拥有 Oracle Database MySQL 。这两个产品是不同的数据库服务器。尽管有一些相似之处,但它们的 SQL 实现所支持的语法和功能却大不相同。限制查询返回行数的方法就是其中之一。

some docs on docs.oracle.com 来看它不是很明显这一事实以某种方式维持了困惑。它们实际上与 MySQL 有关。也许你掉进了那个陷阱?

为了完整起见,这里介绍如何限制 Oracle 和 MySQL 返回的行数:

甲骨文

对于 Oracle,一种方法是简单地使用 pseudo-column ROWNUM :

SELECT * FROM (
SELECT ....
GROUP BY ...
ORDER BY ...
)
WHERE ROWNUM <= 10
-- Yes, you need a subquery here. But Oracle is smart enough
-- to optimize that statement

从 Oracle 12c 开始,您可以使用 FETCH clause
(直接来自文档,因为我没有足够幸运测试过 Oracle 12)

SELECT ...
GROUP BY ...
ORDER BY ...
FETCH FIRST 10 ROWS ONLY;

MySQL

MySQL 支持 LIMIT clause如果我记得清楚的话,至少从 MySQL 3.23 开始。也许甚至之前?无论如何,那意味着很久以前。

SELECT ...
GROUP BY ...
ORDER BY ...
LIMIT 10;

关于sql - 在一个 select 语句中使用 group by、order by 和 limit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26322038/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com