gpt4 book ai didi

sql - Oracle SQL - 在 Have 子句中使用 ROWNUM 分组?

转载 作者:行者123 更新时间:2023-12-04 11:46:10 30 4
gpt4 key购买 nike

我试图让数据库中拥有数据库中最大段的所有权的用户。为此,我正在尝试:

SELECT owner, MAX(bytes) 
FROM SYS.DBA_SEGMENTS
GROUP BY owner
HAVING ROWNUM <= 1;

然而,这会返回 "not a GROUP BY expression" .为什么我不能只选择第一行?我该如何编写此查询?谢谢!

最佳答案

你可以。在 Oracle 12c+ 中,您可以执行以下操作:

SELECT owner, MAX(bytes) 
FROM SYS.DBA_SEGMENTS
GROUP BY owner
ORDER BY MAX(bytes) DESC
FETCH FIRST ROW ONLY;

请注意 ORDER BY .

在早期版本中,您需要一个子查询:
SELECT o.*
FROM (SELECT owner, MAX(bytes)
FROM SYS.DBA_SEGMENTS
GROUP BY owner
ORDER BY MAX(bytes) DESC
) o
WHERE rownum = 1;

关于sql - Oracle SQL - 在 Have 子句中使用 ROWNUM 分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40443917/

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