我写的时候:
SELECT deptno,ename, RANK () OVER (PARTITION BY deptno ORDER BY sal DESC) rank
FROM emp
我得到sal和deptno排序的结果集,但为什么呢?我没有在主ORDER BY
中指定它?
答案 0 :(得分:6)
如果您没有指定主ORDER BY
,则您收到结果的顺序是未指定的,并且将是数据库系统最容易找到的顺序。通常假设默认顺序是行存储在磁盘上的物理顺序,但这是不正确的,这就是数据库通常(不总是)最简单的顺序。
在这种特定情况下,排序所有结果可以更容易地计算排名,并且仍然可以提供您要求的结果。