我正在尝试让数据库中的用户拥有数据库中最大段的所有权.为此,我正在尝试:
SELECT owner, MAX(bytes)
FROM SYS.DBA_SEGMENTS
GROUP BY owner
HAVING ROWNUM <= 1;
Run Code Online (Sandbox Code Playgroud)
然而,这会回来"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;
Run Code Online (Sandbox Code Playgroud)
请注意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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16377 次 |
| 最近记录: |