我试图在一个语句中找出两个“ORDER BY”的流程序列。
我有一个带有一个字段(GS_SEC)的表,其中包含自动生成的值,以156759开头,以32123087结尾。
QUERY 1:
select GS_SEC,
max(GS_SEC) over (),
avg(GS_SEC) OVER (ORDER BY GS_SEC DESC ) AS AAA
from tblgs_reference
where rownum < 11
QUERY 2:
select GS_SEC,
max(GS_SEC) over (),
avg(GS_SEC) OVER (ORDER BY GS_SEC DESC ) AS AAA
from tblgs_reference
where rownum < 11
order by GS_SEC DESC
对于查询1,我得到的结果显示最大的10个GS_SEC值按降序排列+最大值为32123094 +从32123094开始递减平均值。
问题A :结果集的显示顺序是否由“ORDER BY GS_SEC DESC”的“DESC”引起?
对于查询2,我得到的结果显示最小的10个GS_SEC值按递减顺序+最大值为156768 +从156768开始递减平均值。
问题B :在计算中调用AVG函数时,ORACLE是否处理从“156759”或“156768”开始的记录?
问题C :我是否可以说语句最后一部分的“GS_SEC DESC的顺序”是最后处理的,对调用分析函数的方式没有影响?
问题D :两个查询之间的差异只是“ORDER BY GS_SEC DESC”。为什么它会导致差异,对于查询1,返回最大的10个GS_SEC值,而为查询2返回最小的10个GS_SEC值?