输出差异

时间:2019-06-23 16:41:44

标签: oracle

我有两个查询,输出是相同的。但是,差异只是结果中的顺序。请帮助我理解这一点。

select distinct (count(*) over (partition by job)) as Lists
       ,job 
from emp 
order by LISTS;

1   PRESIDENT 
2   ANALYST 
3   DEVELOPER 
3   MANAGER 
4   CLERK 
4   SALESMAN

select count(*),job 
from emp 
group by job 
order by count(*);

1   PRESIDENT 
2   ANALYST 
3   DEVELOPER 
3   MANAGER 
4   SALESMAN 
4   CLERK

在第一个输出中,文员排在第一位,在第二个输出中,文员排在最后。

1 个答案:

答案 0 :(得分:2)

不能保证使用相等的键对行进行排序-数据库可以自由地以它认为方便的任何顺序交付这些行。如果要保持一致的顺序,则必须在JOB中包含ORDER BY字段,因此

...
ORDER BY 1, 2

在两种情况下都应该这样做。

好运。