当我写的时候:
SELECT deptno,ename, RANK () OVER (PARTITION BY deptno ORDER BY sal DESC) rank
FROM emp
我得到按 sal 和 deptno 排序的结果集,但为什么呢?我没有在主要 ORDER BY
中指定它?
最佳答案
如果您没有指定主ORDER BY
,您收到结果的顺序是未指定的,将是数据库系统认为最简单的顺序。通常假设默认顺序是行存储在磁盘上的物理顺序,但这是不正确的,这只是数据库通常(并非总是)最简单的顺序。
在这种特定情况下,对所有结果进行排序可以更轻松地计算排名,并且仍然会为您提供所需的结果。
关于sql - 为什么 OVER 子句中的 ORDER BY 也会影响我的结果集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23195611/